Using Compass from Ruby (not shell)
我正在用Ruby构建一个脚本,我想在其中使用Compass编译一个SCSS文件。我正在尽可能地简化这个过程,并希望避免使用config.rb文件。我只想通过直接Ruby设置几个设置,并告诉Compass将单个SCSS文件编译成一个CSS文件。
我知道这是可能的,但我没有找到任何像样的文件,关于如何做到这一点。任何帮助都将不胜感激。
你是对的,关于如何使用Ruby中的Compass还没有任何全面的文档。这是不幸的,但我们不要让文档之类的小细节阻止我们!
第一次尝试当我想做同样的事情时,我只是拨动指南针的源代码,就可以把这个小红宝石脚本组合起来。乍一看,它似乎起了作用:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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
error: File to import not found or unreadable: compass/css3
指南针<1.0.0(也就是"老办法")。
以下是如何在不重写这些默认值的情况下调用编译器:
1 2 3 4 5 6 7 8 9 10 11 | 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版开始,
感谢@philipp找到如何使用新的API,我们可以再次更新此代码段以与
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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! |
只需从命令行调用compile方法。您可以在那里指定每个选项。要查看所有选项,请运行
下面是一个例子。它将在与test.scss文件相同的目录中输出已编译的css文件。
1 2 | file_name ="absolute/path/to/test.scss" system"compass compile #{file_name} --sass-dir . --css-dir ." |
您可以指定和插入任意多个选项。另外,在Ruby中运行命令时也要检查这一点:
在Ruby脚本中运行命令行命令