2011-09-05 47 views
28

是否可以讓sass監聽一個包含許多sass文件的目錄並生成一個CSS文件?我已經找到一種方法通過包括許多SASS文件合併成一個(style.scss):許多SCSS/SASS文件到一個CSS文件?

@import "scss/header"; 
@import "scss/footer"; 

然後運行下面的代碼:

sass --watch style.scss:style.css 

但問題是,我必須改變該文件在生成一個新的CSS文件之前。

回答

47

如果您看到該目錄,sass將能夠注意到@imported文件中的更改,並更新相關文件。

style.scss:

@import "header"; 
@import "footer"; 

,做:

sass --watch . 

這將編譯到的.css目錄中的所有文件;忽略名稱以_開頭的文件。

我修改了_header.scss或_footer.scss,如果還會更新style.scss。

您也可以在其他目錄輸出:

sass --watch .:output_dir/ 
+0

謝謝!它像一個魅力。 – voigtan

+1

請您澄清一下嗎? 「標題」和「頁腳」是他們header.scss?或header.css?並且它們位於子文件夾或與screen.scss相同的文件夾中? – Alisso

+0

如果部分文件位於不同的文件夾中,該怎麼辦?我有這種情況,不能移動我的CSS文件,因爲我不得不在這種情況下做出很多改變。是否仍然可以改變一個部分,然後創建一個新的CSS主文件? – user2718671

4

你可以告訴SASS與觀看整個文件夾:

sass --watch application/sass:public/stylesheets 

如果您導入所有的部分文件,這應該生成一個文件。每次在文件夾中編輯文件時,CSS文件都會自動生成。

+0

,將工作到,這兩種解決方案是很好的。但我的目標是總共只有一個CSS文件,並且_和一個包含其他所有內容的scss文件對我來說是最好的解決方案。謝謝你的回答,2天后,我真的很喜歡它的所有功能! – voigtan

0

只想添加, 您也可以撥打其他文件中的變量($)和混合類型。

例如:

_variable.scss = $primary:#000
_header.scss = header {color:$primary;}
_footer.scss = footer {background:$primary}

custom.scss

@import "_variables.scss"; 
@import "_header.scss"; 
@import "_footer.scss"; 

輸出= custom.css

header {color:#000;} 
footer {background:#000;}