首页 文章

Compass使用字符串输入编译

提问于
浏览
0

我正在使用JRuby来使用罗盘来编译sass css

我知道如何使用指南针编译scss文件:

compiler = Compass::Compiler.new(
             # Compass working directory
             '.',
             # Input directory
             'styles/scss',
             # Output directory
             'styles/css',
             # Compass options
             { :style => :scss}
           )        
compiler.compile('test.scss','test.css')

但是我想编译一些我在String中的罗盘源而不是文件我一直潜入Compass :: Compiler源但是我没有看到任何编译scss字符串而不是文件的方法

NOTE: 直接使用SASS编译器代替罗盘我可以编译一个scss字符串

engine = Sass::Engine.new(source,:syntax => :scss)
result = engine.render

1 回答

  • 0

    在Compass :: Compiler ruby类型中挖掘了一些之后,我发现它毕竟以一种方式委托给Sass :: Engine:

    编译函数类似于:

    def compile(sass_filename, css_filename)
        ...
        engine(sass_filename, css_filename).render
        ...
    end
    

    调用 engine 函数:

    def engine(sass_filename, css_filename)
        ...
        Sass::Engine.new(open(sass_filename).read, opts)
        ...
    end
    

    所以要使用罗盘编译一个String,该方法与使用原始Sass编译时相同:

    Sass::Engine.new(scssString,{:syntax => :scss,
                                 :compass => {:css_dir => 'stylesheets',:js_dir => 'javascripts',:images_dir => 'images'}})
    result = engine.render
    

相关问题