2012-10-29 61 views
8

我正在Ruby中構建一個腳本,我想使用Compass編譯單個SCSS文件。我試圖儘可能簡化,並希望避免使用config.rb文件。我只想通過直接的Ruby設置幾個設置,並告訴Compass將一個SCSS文件編譯成一個CSS文件。從Ruby使用指南針(不是shell)

我知道這一定是可能的,但我一直沒有找到任何體面的文件來說明如何去做。任何幫助,將不勝感激。

回答

9

你說得對,有沒有真正瞭解如何在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

羅盤< 1.0.0(又名「老辦法」)

下面是如何調用編譯器沒有覆蓋這些默認值:

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,導致...

指南針> = 1.0.0(又名。 「新辦法」)

與感謝@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! 
+0

太棒了!太棒了!使用'bundle exec'時遇到一些小故障。我不斷收到指南針無法加載任何混音的錯誤。我假設它需要設置一個環境變量。你會碰巧知道需要設置什麼嗎? –

+0

我應該添加錯誤,我得到......錯誤:文件導入未找到或不可讀:指南針/ css3。' –

+0

我已經開始了另一個問題。我認爲這是一個不同的問題。但是,我現在認爲它與其直接相關。 http://stackoverflow.com/questions/13160660/compass-mixins-not-found-when-using-directly-from-ruby。 –

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運行命令:

Running command line commands within Ruby script

+1

謝謝。我想盡量避免分叉系統進程。 –