Java的SASS实现? [关闭]

问题描述 投票:72回答:12

我正在寻找Java中的SASS实现(可以与JSP / JSF一起使用)。对于Python,我发现了CleverCSS,但Java没有。有人听说过这种生成CSS的工具吗?

java maven ant jruby sass
12个回答
48
投票

使用ANT:

  1. 下载JRuby完整的jar文件(JRuby Complete jar download page
  2. 下载最新的HAML / SASS代码(HAML/SASS tarball),并将其解压缩。把它放在“/ libs / sass- [VERSION]”中
  3. 将以下内容添加到ant构建文件中。
  4. 将脚本中的[VERSION]替换为JRuby和SASS的相应版本
  5. 运行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>  

1
投票

我在使用Ant的eclipse项目中使用Compass&Sass。

我在这里遵循了这个教程:

http://caueguerra.com/tutorial-using-sass-in-a-java-project

指南针扩展Sass并允许我的其他额外功能。

http://compass-style.org/


1
投票

我知道我迟到了,但这是我在一个带有Ant构建的Java项目中使用SASS的方法:http://workingonthecoolstuff.blogspot.com/2011/02/using-sass-in-ant-build.html总结一下,我正在安装Ruby和Sass的机器上进行构建,所以它是就像使用包含所有SCSS / SASS文件的文件集的Ant“apply”任务调用sass命令/应用程序一样简单。


0
投票

Sassc是C语言中的命令行实现,应该很容易添加到构建过程中。基于作者我会说它应该与sass保持同步:

Sass最初是由这个图书馆的共同创建者,Hampton Catlin(@hcatlin)创建的。语言的延伸和持续演变都是Nathan Weizenbaum(@ nex3)和Chris Eppstein(@chriseppstein)多年努力的结果。


18
投票

ZUSS是LESS和SASS的不错选择。它类似于LESS。与LESS和SASS不同,ZUSS文件的处理不需要JavaScript解释器。

免责声明:我是ZUSS的开发人员。我开发它只是因为我找不到一个简洁的Java解决方案。


14
投票

有一个项目:http://code.google.com/p/jsass/(但它处于非常早期阶段)。

如果您对Less感兴趣,可以使用现成的Java版本:http://www.asual.com/lesscss/


10
投票

您还可以查看Web Resource Optimizer 4 J (WRO4J),它允许很多东西(缩小,资源合并)并支持更少的CSS(据我所知在运行时)。

这意味着:您将wro4j过滤器添加到web.xml中,当您要求CSS时,您的.scss(或.saas)文件将编译为标准CSS。

我还没有使用它,但它似乎比这里列出的其他产品更先进。


事实上,我正在阅读Less for Java网站(http://www.asual.com/lesscss/)上的评论,WRO4J使用这个库提供“即时编译”。所以我认为Less for Java是要走的路。


7
投票

您是否知道Vaadin Web框架附带了自己的内置Sass编译器?见https://vaadin.com/blog/-/blogs/state-of-sass-support-in-vaadin-7-today ......


5
投票

我个人发现SASS语法很深,非常烦人。对于Ruby / Python人群来说,它可能是第二天性;对我来说,作为Java人 - 不是那么多。我更喜欢LESS,它建立在CSS语法之上,而不是想出一个新的。这有一个很好的附加优势,即能够“按原样”使用现有的CSS文件,并根据需要包含LESS功能。

也就是说,据我所知,SASS和LESS都没有java端口。两者都是基于ruby的,所以你可以在JRuby下安装它们。这种方法的唯一问题是JRuby启动时心情迟钝。但是,这并不是什么大不了的事,因为你可能会在开发中使用文件监控(一旦它启动它运行得非常顺利)并且你不会太在意你的构建在部署期间需要几秒钟的时间。

还有一些基于PHP的实现,如LessPhpxCSS等。但是,没有亲自尝试过。


4
投票

似乎毕竟有一个(在问到这个问题后可能会发展一段时间)

https://github.com/Jasig/sass-maven-plugin


3
投票

鉴于必须将SASS转换为CSS才能使用,使用与SASS一起分发的sass2css有什么问题?


3
投票

你可以尝试我刚刚放在一起的这个过滤器 - https://github.com/darrinholst/sass-java

© www.soinside.com 2019 - 2024. All rights reserved.