我正在寻找 Java 中的 SASS 实现(可以与 JSP/JSF 一起使用)。对于 Python,我找到了 CleverCSS,但对于 Java 则没有。有人听说过这种用于生成 CSS 的工具吗?
12 回答
使用蚂蚁:
- 下载 JRuby Complete jar 文件(JRuby Complete jar 下载页面)
- 下载最新的 HAML/SASS 代码 ( HAML/SASS tarball ),然后解压。把它放在“/libs/sass-[VERSION]”
- 将以下内容添加到 ant 构建文件中。
- 将脚本中的[VERSION]替换为JRuby和SASS对应的版本
- 运行ant脚本,sass或scss文件将被编译!
<path id="JRuby">
<fileset file="libs/jruby-complete-[VERSION].jar"/> <!-- Location of JRuby jar file -->
</path>
<target name="compileSCSS">
<echo message="Compiling scss files..." />
<property name="filesIn" value="${dir.css}/scss/**/[^_]*.scss" />
<property name="fileOutDir" value="/${dir.css}/${dir.css.build}" />
<script language="ruby" classpathref="JRuby">
<![CDATA[
require 'libs/sass-[VERSION]/lib/sass'
require 'sass/exec'
files = Dir.glob($project.getProperty('filesIn'))
Dir.mkdir($project.getProperty('fileOutDir')) unless File.exists?($project.getProperty('fileOutDir'))
files.each do
| file |
puts " [sass compiler] " + file + " -> " + $project.getProperty('fileOutDir') + "/" + File.basename(file, ".*") + ".css"
opts = Sass::Exec::Sass.new(["--load-path", File.dirname(file), file, File.join($project.getProperty('fileOutDir'), File.basename(file, ".*") + ".css")])
opts.parse
end
]]>
</script>
<echo message="Done compiling scss files!" />
</target>
使用 MAVEN:
Maven 也可以这样做: 使用 antrun 插件:
<project>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<id>compileAndMinify</id>
<phase>compile</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<mkdir dir="${project.build.directory}/compiled" />
<echo message="Compiling scss files..."/>
<path id="JRuby">
<fileset file="${basedir}/jars/jruby-complete-[VERSION].jar"/>
</path>
<property name="filesIn" value="${project.build.directory}/css/**/[^_]*.scss" />
<property name="fileOutDir" value="${project.build.directory}/compiled/css" />
<script language="ruby" classpathref="JRuby">
<![CDATA[
require 'libs/sass-[VERSION]/lib/sass'
require 'sass/exec'
files = Dir.glob($project.getProperty('filesIn'))
Dir.mkdir($project.getProperty('fileOutDir')) unless File.exists?($project.getProperty('fileOutDir'))
files.each do
| file |
puts " [sass compiler] " + file + " -> " + $project.getProperty('fileOutDir') + "/" + File.basename(file, ".*") + ".css"
opts = Sass::Exec::Sass.new(["--load-path", File.dirname(file), file, File.join($project.getProperty('fileOutDir'), File.basename(file, ".*") + ".css")])
opts.parse
end
]]>
</script>
</target>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
ZUSS是 LESS 和 SASS 的一个很好的替代品。它类似于 LESS。与 LESS 和 SASS 不同,ZUSS 文件的处理不需要 JavaScript 解释器。
免责声明:我是 ZUSS 的开发者。我开发它只是因为我找不到适用于 Java 的简洁解决方案。
有一个项目:http ://code.google.com/p/jsass/ (但它处于非常早期的阶段)。
如果你对 Less 感兴趣,这里有一个现成的 Java 版本:http ://www.asual.com/lesscss/
您还可以查看Web Resource Optimizer 4 J (WRO4J),它允许做很多事情(缩小、资源合并)并支持 Less CSS(据我所知在运行时)。
这意味着:您将 wro4j 过滤器添加到您的 web.xml,并且当您请求 CSS 时,您的 .scss(或 .saas)文件将被编译为标准 CSS。
我还没有使用它,但它似乎比这里列出的其他产品更先进。
事实上,我正在阅读 Less for Java 网站 ( http://www.asual.com/lesscss/ ) 上的评论,而 WRO4J 使用这个库来提供它的“动态 Less 编译”。所以我认为 Less for Java 是要走的路。
您知道 Vaadin Web 框架带有它自己的内置 Sass 编译器吗?请参阅https://vaadin.com/blog/-/blogs/state-of-sass-support-in-vaadin-7-today ...
我个人觉得 SASS 语法很深,非常烦人。对于 Ruby / Python 人群来说,它可能是第二天性;对我作为 Java 人来说 - 不是那么多。我非常喜欢基于 CSS 语法的LESS ,而不是提出新的语法。这有一个很好的附加优势,即能够“按原样”使用现有的 CSS 文件并根据需要合并 LESS 功能。
也就是说,据我所知,SASS 和 LESS 都没有 Java 端口。但是,两者都是基于 ruby 的,因此您可以将它们安装在JRuby下。这种方法的唯一问题是 JRuby 的启动速度非常慢。不过,这并不是什么大问题,因为您可能会在开发中使用文件监控(一旦启动,它就会运行得非常流畅),而且您不会太在意在部署期间构建需要多几秒钟的时间.
毕竟似乎有一个(可能是在提出这个问题后一段时间才开发的)
鉴于必须将 SASS 转换为 CSS 才能使用,那么使用与 Ruby SASS 一起分发的 sass2css 有什么问题?
你可以试试我刚刚放在一起的这个过滤器 - https://github.com/darrinholst/sass-java
我在使用 Ant 的 Eclipse 项目中使用 Compass & Sass。
我在这里遵循了本教程:
http://caueguerra.com/tutorial-using-sass-in-a-java-project
Compass 扩展了 Sass 并允许我的其他附加功能。
我知道我迟到了,但这是我在一个带有 Ant 构建的 Java 项目中使用 SASS 的方法: http ://workingonthecoolstuff.blogspot.com/2011/02/using-sass-in-ant -build.html 总而言之,我在安装了 Ruby 和 Sass 的机器上进行构建,所以它就像使用 Ant“应用”任务调用 sass 命令/应用程序一样简单,文件集包含所有 SCSS/SASS文件。
Sassc是 C 中的命令行实现,应该很容易添加到构建过程中。根据作者,我会说它应该与 sass 保持同步:
Sass 最初是由这个库的共同创建者 Hampton Catlin (@hcatlin) 创建的。该语言的扩展和持续发展都是 Nathan Weizenbaum (@nex3) 和 Chris Eppstein (@chriseppstein) 多年工作的结果。