我正在Ruby中構建一個腳本,我想使用Compass編譯單個SCSS文件。我試圖儘可能簡化,並希望避免使用config.rb文件。我只想通過直接的Ruby設置幾個設置,並告訴Compass將一個SCSS文件編譯成一個CSS文件。從Ruby使用指南針(不是shell)
我知道這一定是可能的,但我一直沒有找到任何體面的文件來說明如何去做。任何幫助,將不勝感激。
我正在Ruby中構建一個腳本,我想使用Compass編譯單個SCSS文件。我試圖儘可能簡化,並希望避免使用config.rb文件。我只想通過直接的Ruby設置幾個設置,並告訴Compass將一個SCSS文件編譯成一個CSS文件。從Ruby使用指南針(不是shell)
我知道這一定是可能的,但我一直沒有找到任何體面的文件來說明如何去做。任何幫助,將不勝感激。
你說得對,有沒有真正瞭解如何在Ruby中使用北斗任何全面的文檔。這很不幸,但我們不要讓像文檔這樣的細節阻止我們!
當我一直在尋找做同樣的事情,我只是捅圍繞北斗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')
但顯然羅盤的默認配置選項一大堆的直接調用編譯器構造(其中上海社會科學院load_path
就是其中之一)時,不會自動包括在內。嘗試導入指南針等功能,並混入,如當這可能會導致錯誤:
error: File to import not found or unreadable: 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')
然而,隨着北斗版本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!
只需從命令行調用compile方法即可。您可以在那裏指定每個選項。要查看所有選項,請運行compass help compile
。
下面是一個例子。它會將編譯後的css文件輸出到與test.scss文件相同的目錄中。
file_name = "absolute/path/to/test.scss"
system "compass compile #{file_name} --sass-dir . --css-dir ."
您可以根據需要指定和插入儘可能多的選項。還要檢查這個使用Ruby運行命令:
謝謝。我想盡量避免分叉系統進程。 –
太棒了!太棒了!使用'bundle exec'時遇到一些小故障。我不斷收到指南針無法加載任何混音的錯誤。我假設它需要設置一個環境變量。你會碰巧知道需要設置什麼嗎? –
我應該添加錯誤,我得到......錯誤:文件導入未找到或不可讀:指南針/ css3。' –
我已經開始了另一個問題。我認爲這是一個不同的問題。但是,我現在認爲它與其直接相關。 http://stackoverflow.com/questions/13160660/compass-mixins-not-found-when-using-directly-from-ruby。 –