2014-05-02 47 views
4

我有一個運行在grunt上的羅盤任務,它產生一個編譯的base.css文件以及一些頁面特定的css文件。 base.scss @imports a _settings.scss部分決定了所有文件的全局設置。以編程方式運行Compass Grunt任務

compass: { 
    theme: { 
     options: { 
      sassDir: '/sass', 
      cssDir: 'css', 
      fontsPath: 'css/fonts', 
      imagesPath: 'img' 

     } 
    } 
} 

我希望能夠多次撥打羅盤的任務,但每次都莫名其妙地規定不同的設置文件在base.scss進口和使用不同的cssDir的輸出。這是可以實現的嗎?

我試圖使用下面的方法,基本上在兩個不同的羅盤任務中增加了指南針config.rb(通過原始)。每個任務都包含到包含設置文件的目錄的不同導入路徑。這個設置文件然後被拾取爲我的base.scss頂部的@import settings.scss

compass: { 
    theme: { 
     options: { 
      httpPath: '/', 
      sassDir: '/sass', 
      cssDir: 'css', 
      raw: 'add_import_path "/sass/theme"' 

     } 
    }, 
    theme2: { 
     options: { 
      httpPath: '/', 
      sassDir: '/sass', 
      cssDir: 'css', 
      raw: 'add_import_path "/sass/theme2"' 

     } 
    } 
} 

這似乎工作,雖然它感覺像一個黑客它是最接近我有一個工作的解決方案。似乎應該有辦法做到這一點,但迄今爲止解決方案已提到我。

我現在想,如果我可以使用registerTask()來創建我需要的做法有點像一個我發現這裏的功能:

Programmatically pass arguments to grunt task?

+0

我找啊找一個體面的解決方案,這一點,但它似乎並不像這樣使用咕嚕目前可能。我考慮過的一種方法是在兩個單獨的目錄中設置partials,然後當對任何sass文件進行更改時,將所有核心模塊和頁面文件複製到這些目錄中,最後在兩組文件上運行指南針任務......似乎漫長的道路將會使整個過程花費更長的時間。也許唯一的解決辦法就是加快學習節點並構建我自己的grunt插件來處理這個問題。 –

回答

1

您當前的配置

我猜您現在工作方式的主要警告是更改導入路徑不適用於在主題之間共享內容。對此的建議是將兩個非部分文件分開。

shared/ 
    _partial1.scss 
    _partial2.scss 
    _partial3.scss 
    _partial4.scss 
    _partial5.scss 
    _base.scss 
theme1.scss 
theme2.scss 

init每個主題的變量都在每個主題#.scss中。 然後,如果您需要將其部署到像「base.css」這樣的相同名稱的不同文件夾中,您可以使用另一個grunt插件(如https://github.com/gruntjs/grunt-contrib-copy)將每個主題#.css複製到名爲base.css下的主題#文件夾中。

在theme1.scss內容可能是:

$variable1: ''; 
$variable2: ''; 
$variable3: ''; 

@import 'base', 
     'partial1', 
     'partial2', 
     'partial3', 
     'partial4', 
     'partial5'; 
+0

對不起,沒跟着。什麼是「導入或嵌入到每個主題文件中的變量」的意思是什麼?主題文件是您在共享目錄中列出的部分嗎? –

+0

每個主題中的變量初始化在每個主題中#.scss,I'我編輯答案 – fernandopasik

+0

感謝您的答案btw。所以我用copy來複制一個主題#.css到一個目錄中,並將其重命名爲base.css?這就是答案讀取給我的方式,我不確定這會起作用對我來說,我需要主題變量可用於基礎部分。這給了我和主意,但..也許我可以將基本部分複製到兩個不同的目錄中,這兩個目錄中都有不同的主題文件。然後從那裏我可以運行我的指南針任務...將工作嗎? –