我有一个小的ruby脚本使用Compass来编译* .scss文件,因为Compass和Sass是基于ruby的我只是直接使用编译器(基于this SO question):
require 'compass'
require 'sass'
Compass.add_configuration({
:project_path => '.',
:sass_path => 'css',
:css_path => 'css',
:output_style => :compressed
},'custom')
Compass.compiler.compile('css/index.scss', 'css/index.css')
按预期工作并进行编译,但是,我也收到了这条消息:
Compass.compiler is deprecated. Use Compass.sass_compiler instead.
所以我尝试使用:
Compass.sass_compiler.compile('css/index.scss', 'test.css')
什么抛出错误,告诉我没有定义类SassCompiler
(NoMethodError)。
我真的想使用建议的方法,但是我可以使用它吗?我需要提前做些什么?
感谢您的帮助!
答案 0 :(得分:4)
在挖掘了一下之后,我终于找到了它!
require 'compass/sass_compiler'
是缺失的一行!
运行编译的最后一行如下:
Compass.sass_compiler.compile!
多数民众赞成。
顺便说一句:Compass.sass_compiler
方法接受一些选项(source),这些选项被移交给编译器,但是如上所述使用Compass.add_configuration
执行同一个Job。
我希望有人可以使用这些信息,快乐编译!
修改强>
由于这里的评论是完整的代码,适用于我的项目。它包含在构建脚本中,以下几行来自初始化:
require 'compass'
require 'compass/sass_compiler'
Compass.add_configuration({
:project_path => _(),
:output_style => :expanded,
:cache_path => '<path to cache>',
:http_fonts_path => '../fonts',
:fonts_dir => '<relative path to fonts>',
:sass_path => '<path to the scss files>',
:css_path => '<path fot the compiled css>',
:http_images_path => '../img',
:images_path => '<path to images>'
},'custom-name')
这些行在每个编译中运行:
compiler = Compass.sass_compiler({
:only_sass_files => [
'<path to scss file to compile>'
]})
compiler.compile!
要了解所有可能的选项,我建议您查看源代码以及sass和指南针的官方文档。