在Ant build.xml中使用Compass编译SASS

par*_*zan 3 ruby build.xml jruby compass-sass

有谁知道如何使用JRuby和Compass模块在build.xml中编译SASS(*.scss)文件?

我可以使用sass独立安装中的Sass :: Exec模块以下列方式从*.scss编译为*.css:

<!-- Compile SCSS files copied to target folder  -->
<property name="stylesheetFolder" location="myproject/stylesheet"/>
<property name="inputFiles" value="${stylesheetFolder}/[^_]*.scss" />
<echo message="Compiling SCSS files from ${stylesheetFolder}..." />
<script language="ruby" classpath="${env.EP_LIB}/jruby/complete/${jruby-complete.build.jar}">
  <![CDATA[
           require $project.getProperty('env.EP_LIB') + '/sass/sass-3.2.9/lib/sass'
           require 'sass/exec'

           files = Dir.glob($project.getProperty('inputFiles'))
           files.each do |file|
             opts = Sass::Exec::Sass.new(["--style", "compressed", "--load-path", File.dirname(file), file, File.join(File.dirname(file), File.basename(file, ".*") + ".css")])
             opts.parse
           end
  ]]>
</script>
<echo message="Done compiling SCSS source files." />
Run Code Online (Sandbox Code Playgroud)

但是,这并没有给我Compass框架的强大功能.我下载了指南针宝石作为一个独立的,我想使用其中一个Compass Ruby模块用以下内容替换Ant build.xml中的上述代码:

<script language="ruby" classpath="${env.EP_LIB}/jruby/complete/${jruby-complete.build.jar}">
  <![CDATA[
           require $project.getProperty('env.EP_LIB') + '/compass/compass-0.12.2/lib/compass' 
           require 'compass/exec'

           files = Dir.glob($project.getProperty('inputFiles'))
           files.each do |file| 
             opts = Compass::Exec::Compass.new(["--style", "compressed", "--load-path", File.dirname(file), file, File.join(File.dirname(file), File.basename(file, ".*") + ".css")])
             opts.parse
           end
  ]]>
</script>
Run Code Online (Sandbox Code Playgroud)

有人做过这个吗?

par*_*zan 5

好的,我终于完成了很多努力,并使用了过时的文档.这是有用的还是我们:

将宝石捆绑成可执行的jar

  1. 下载jruby-complete-1.7.4.jar(我的工作版)(来自http://jruby.org/files/downloads/1.7.4/)
  2. C:\jruby\complete>java -jar jruby-complete-1.7.4.jar -S gem install -i ./compass compass
  3. C:\jruby\complete>jar uf jruby-complete-1.7.4.jar -C compass .
  4. C:\jruby\complete>java -jar jruby-complete-1.7.4.jar -S gem list
  5. 成功运行上面的cmd后,您jruby-complete-1.7.4.jar将被修改.现在它应该包含捆绑的宝石(包括指南针).这适用于您要在Compass项目中捆绑和使用的其他gem.

compile.rb

Dir.entries(ARGV[0]).each do |lib|     
    $LOAD_PATH.unshift "#{ARGV[0]}/#{lib}/lib" 
end 

require 'rubygems' 
require 'compass' 
require 'compass/exec' 

command_line_class = Compass::Exec::SubCommandUI.new([ARGV[1], ARGV[2], "-q"]).run!
Run Code Online (Sandbox Code Playgroud)

config.rb

http_path = "/"
css_dir = "."
sass_dir = "."
images_dir = "../images"
javascripts_dir = "../js"

output_style = :compressed
line_comments = false
Run Code Online (Sandbox Code Playgroud)

build.xml文件

    <path id="jruby.classpath">
        <fileset dir="${env.LIB}/jruby/complete">
            <include name="${jruby-complete.build.jar}"></include>  
        </fileset>
    </path>

    <java fork="true" failonerror="true" classpathref="jruby.classpath" classname="org.jruby.Main">
        <arg line="${stylesheetFolder}/compass/compile.rb ${rubyCompleteFolder}/compass/gems compile ${stylesheetFolder}"></arg>
    </java>  
Run Code Online (Sandbox Code Playgroud)

以下是帮助我完成Compass和Ant集成的支持文档:

我希望这有助于节省你很多时间:)