2

我正在我们的 Java 应用程序中实现 Sass 支持。由于我们已经有了 wro4j(在最新版本 1.7.5 中),我决定使用它的 ruby​​SassCss 作为预处理器。在我使用一些较新的语法之前,我已经完成了所有配置,并且整个过程都处理了 .scss 文件。

使用带有 3.2.0 版本的 Sass ( http://sass-lang.com/documentation/file.SASS_CHANGELOG.html )的 VIII 2012 中引入的功能时出现错误,即可变参数 ("$args... " 语法)和 mixin 声明中的内容块。

@mixin mix($arg...) {
  font-size: 12px;
}

.class {
  color: black;
}

例如,上面的简单 .scss 文件在 ruby​​SassCss 处理时抛出:

2014-06-13 11:13:48,574 DEBUG [ro.isdc.wro.http.WroFilter] Exception occured
ro.isdc.wro.WroRuntimeException: org.jruby.embed.EvalFailedException: (SyntaxError) Invalid CSS after "@mixin mix($arg": expected ")", was "...) {"
        at ro.isdc.wro.extensions.processor.support.sass.RubySassEngine.process(RubySassEngine.java:70)
        at ro.isdc.wro.extensions.processor.css.RubySassCssProcessor.process(RubySassCssProcessor.java:59)
        at ro.isdc.wro.model.resource.processor.decorator.ProcessorDecorator.process(ProcessorDecorator.java:89)
        at ro.isdc.wro.model.resource.processor.decorator.LazyProcessorDecorator.process(LazyProcessorDecorator.java:49)
        at ro.isdc.wro.model.resource.processor.decorator.ProcessorDecorator.process(ProcessorDecorator.java:89)
        at ro.isdc.wro.model.resource.processor.decorator.ProcessorDecorator.process(ProcessorDecorator.java:89)

如果不是 wro4j 发行说明 ( https://code.google.com/p/wro4j/wiki/ReleaseNotes ) 明确指出他们很久以前实现了 Sass 处理器 3.2.1,那我不会那么惊讶在 IX 2012 中:

发布 1.5.0 日期:2012 年 9 月 27 日

(...)

Issue523 将 ruby​​SassCss 处理器升级到 3.2.1

任何人都可以告诉我他们是否有同样的问题或知道是什么原因造成的?我真的很想利用这种可变参数语法。


这也是我的 pom.xml:

<dependency>
  <groupId>ro.isdc.wro4j</groupId>
  <artifactId>wro4j-core</artifactId>
  <version>1.7.5</version>
</dependency>
<dependency>
  <groupId>ro.isdc.wro4j</groupId>
  <artifactId>wro4j-extensions</artifactId>
  <version>1.7.5</version>
</dependency>
4

1 回答 1

1

看起来你只需要强制sass-gems到 3.2.1 版本。wro4j 应该强制它自己,但它似乎没有(它使用 3.1.9 版本代替)。无论如何,解决方案是将其添加到 pom.xml 中的任何位置:

<dependency>
  <groupId>me.n4u.sass</groupId>
  <artifactId>sass-gems</artifactId>
  <version>3.2.1</version>
</dependency>
于 2014-06-13T10:23:56.093 回答