我正在Ruby中构建一个脚本,我想用Compass编译一个SCSS文件。我试图尽可能简单,并希望避免使用config.rb文件。我只想通过直接Ruby设置一些设置,并告诉Compass将单个SCSS文件编译成CSS文件。
我知道这必须是可能的,但我找不到任何关于如何做的体面文件。任何帮助将不胜感激。
答案 0 :(得分:9)
你是对的,没有关于如何使用Ruby的Compass的全面文档。这很不幸,但是不要让像文档这样的小细节阻止我们!
当我想要做同样的事情时,我只是在指南针source周围探索并且能够将这个小Ruby脚本放在一起。乍一看似乎可以解决这个问题:
require 'compass'
require 'sass/plugin'
compiler = Compass::Compiler.new(
# Compass working directory
'.',
# Input directory
'styles/scss',
# Output directory
'styles/css',
# Compass options
{ :style => :compressed }
)
compiler.compile('test.scss', 'test.css')
但显然Compass有一堆默认配置选项,在直接调用编译器构造函数时(SASS load_path
为1)不会自动包含这些选项。尝试导入Compass函数和mixins时,这可能会导致错误,例如:
错误:要导入的文件未找到或不可读:compass / css3
以下是如何在没有的情况下调用编译器来覆盖这些默认值:
require 'compass'
Compass.add_configuration(
{
:project_path => '.',
:sass_path => 'styles/scss',
:css_path => 'styles/css'
},
'custom' # A name for the configuration, can be anything you want
)
Compass.compiler.compile('test.scss', 'test.css')
但是,从Compass版本1.0.0开始,Compass.compiler
已被弃用,转而使用Compass.sass_compiler
,导致...
感谢@philipp查找how to use the new API,我们可以再次更新此代码段以使用Compass.sass_compiler
:
require 'compass'
require 'compass/sass_compiler'
Compass.add_configuration(
{
:project_path => '.',
:sass_path => 'styles/scss',
:css_path => 'styles/css'
},
'custom' # A name for the configuration, can be anything you want
)
compiler = Compass.sass_compiler({
:only_sass_files => [
'styles/scss/test.scss'
]
})
compiler.compile!
答案 1 :(得分:0)
只需从命令行调用compile方法即可。您可以在那里指定每个选项。要查看所有选项,请运行compass help compile
。
下面是一个例子。它将编译的css文件输出到test.scss文件所在的目录中。
file_name = "absolute/path/to/test.scss"
system "compass compile #{file_name} --sass-dir . --css-dir ."
您可以根据需要指定和插入任意数量的选项。还要检查这是否在ruby中运行命令: