Ruby Sass 命令列介面

⚠️ 注意!

Ruby Sass 已停止支援,並且不再維護。請儘快改用 Dart SassLibSass

用法用法永久連結

Ruby Sass 可執行檔可以兩種模式之一呼叫。

一對一模式一對一模式永久連結

sass [input.scss] [output.css]

一對一模式會將單個輸入檔案 (input.scss) 編譯到單個輸出位置 (output.css)。如果沒有傳遞輸出位置,則編譯後的 CSS 會列印到終端機。如果沒有傳遞輸入*或*輸出,則 CSS 會從 標準輸入 讀取並列印到終端機。

如果輸入檔案的副檔名是 .scss,則會以 SCSS 語法解析;如果副檔名是 .sass,則會以 縮排語法 解析。如果檔案沒有這兩個副檔名,或者來自標準輸入,則預設會以縮排語法解析。這可以使用 --scss 旗標 來控制。

多對多模式多對多模式永久連結

sass [<input.css>:<output.css>] [<input/>:<output/>] [input.css] [input/]...

多對多模式會將一個或多個輸入檔案編譯成一個或多個輸出檔案。輸入和輸出以冒號分隔。它也可以將目錄中的所有 Sass 檔案編譯成另一個目錄中名稱相同的 CSS 檔案。當任何參數包含冒號,*或者*傳遞了 --update 旗標--watch 旗標 時,就會啟用多對多模式。

如果傳遞輸入檔案時沒有對應的輸出檔案,則會將其編譯成以輸入檔案命名的 CSS 檔案,但副檔名會替換為 .css。如果傳遞輸入目錄時沒有對應的輸出目錄,則其中的所有 Sass 檔案都會編譯成相同目錄中的 CSS 檔案。

$ sass style.scss:style.css
      write style.css
      write style.css.map
$ sass light.scss:light.css dark.scss:dark.css
      write light.css
      write light.css.map
      write dark.css
      write dark.css.map
$ sass themes:public/css
      write public/css/light.css
      write public/css/light.css.map
      write public/css/dark.css
      write public/css/dark.css.map

編譯整個目錄時,Sass 會忽略名稱以 _ 開頭的 部分檔案。您可以使用部分檔案來區分樣式表,而不會建立一堆不必要的輸出檔案。

多對多模式只會編譯相依檔案修改時間比對應的 CSS 檔案產生時間更新的樣式表。它也會在更新樣式表時顯示狀態訊息。

選項選項永久連結

通用通用永久連結

--load-path–load-path 永久連結

此選項(縮寫為 -I)會新增 Sass 搜尋樣式表的額外 載入路徑。可以多次傳遞此選項以提供多個載入路徑。較早的載入路徑會優先於較晚的載入路徑。

$ sass --load-path=node_modules/bootstrap/dist/css style.scss style.css

如果設定了 SASS_PATH 環境變數,也會從中載入載入路徑。此變數應該是以 ;(在 Windows 上)或 :(在其他作業系統上)分隔的路徑清單。SASS_PATH 上的載入路徑會優先於命令列上傳遞的載入路徑。

$ SASS_PATH=node_modules/bootstrap/dist/css sass style.scss style.css

--require–require 永久連結

此選項(縮寫為 -r)會在執行 Sass 之前載入 Ruby gem。它可以用於將 Ruby 中定義的函式載入到 Sass 環境中。

$ sass --require=rails-sass-images style.scss style.css

--compass–compass 永久連結

此旗標會載入 Compass framework,並使其 mixin 和函式可在 Sass 中使用。

$ sass --compass style.scss style.css

--style–style 永久連結

此選項(縮寫為 -t)控制產生的 CSS 的輸出樣式。Ruby Sass 支援四種輸出樣式

  • nested(預設值)會縮排 CSS 規則以符合 Sass 來源的巢狀結構。
  • expanded 會將每個選擇器和宣告寫在自己的行上。
  • compact 會將每個 CSS 規則放在自己的單一行上。
  • compressed 會盡可能移除多餘的字元,並將整個樣式表寫在單 行。
$ sass --style=nested
h1 {
  font-size: 40px; }
  h1 code {
    font-face: Roboto Mono; }

$ sass --style=expanded style.scss
h1 {
  font-size: 40px;
}
h1 code {
  font-face: Roboto Mono;
}

$ sass --style=compact style.scss
h1 { font-size: 40px; }
h1 code { font-face: Roboto Mono; }

$ sass --style=compressed style.scss
h1{font-size:40px}h1 code{font-face:Roboto Mono}

--help–help 永久連結

這個旗標(縮寫為 -h-?)會印出此文件 摘要。

$ sass --help
Usage: sass [options] [INPUT] [OUTPUT]

Description:
  Converts SCSS or Sass files to CSS.

...

--version–version 永久連結

這個旗標會印出 Sass 的當前 版本。

$ sass --version
Sass 3.7.4

監看與更新監看與更新 永久連結

這些選項會影響 多對多 模式

--watch–watch 永久連結

啟用 多對多模式,並使 Sass 保持開啟狀態,並在樣式表或其依賴項變更時繼續編 譯。

$ sass --watch themes:public/css
      write public/css/light.css
      write public/css/light.css.map

​# Then when you edit themes/dark.scss...
      write public/css/dark.css
      write public/css/dark.css.map

--poll–poll 永久連結

這個旗標只能與 --watch 一起傳遞,它會告知 Sass 每隔一段時間手動檢查原始碼檔案的變更,而不是依靠作業系統通知它發生變更。如果您在作業系統的通知系統無法運作的遠端磁碟機上編輯 Sass,則可能需要 這樣做。

$ sass --watch --poll themes:public/css
      write public/css/light.css
      write public/css/light.css.map

​# Then when you edit themes/dark.scss...
      write public/css/dark.css
      write public/css/dark.css.map

--update–update 永久連結

這個旗標會啟用 多對多模式,即使沒有任何引數是以冒號分 隔的對。

$ sass --update style.scss
      write style.css
      write style.css.map

--force–force 永久連結

這個旗標(縮寫為 -f)只能在 多對多模式 中傳遞。它會使 Sass 檔案 *總是* 被編譯成 CSS 檔案,而不是僅在原始碼檔案比輸出檔案更新時才進行編 譯。

--force 旗標不能與 --watch 旗標 一起 傳遞。

$ sass --force style.scss:style.css
      write style.css
      write style.css.map

--stop-on-error–stop-on-error 永久連結

這個旗標只能在 多對多模式 中傳遞。它會告知 Sass 在偵測到錯誤時立即停止編譯,而不是嘗試編譯其他可能不包含錯誤 的 Sass 檔案。

$ sass --stop-on-error themes:public/css
Error: Invalid CSS after "h1 {font-size: ": expected expression (e.g. 1px, bold), was "}"
        on line 1 of test.scss
  Use --trace for backtrace.

輸入與輸出輸入與輸出 永久連結

這些選項控制 Sass 如何載入其輸入檔案以及如何產生輸出 檔案。

--scss–scss 永久連結

這個旗標會告知 Sass 將 標準輸入 解析為 SCSS

$ echo "h1 {font-size: 40px}" | sass --scss
h1 {
  font-size: 40px;
}

--sourcemap–sourcemap 永久連結

這個選項控制 Sass 如何產生原始碼映射,這些檔案會告訴瀏覽器或其他使用 CSS 的工具,該 CSS 如何對應到產生它的 Sass 檔案。它們讓您可以在瀏覽器中查看甚至編輯 Sass 檔案。請參閱在 ChromeFirefox 中使用原始碼映射的說明。它有四個可能 值:

  • auto(預設值)盡可能使用相對 URL 從原始碼映射連結到 Sass 樣式表,否則使用絕對 file: URL
  • file 一律使用絕對 file: URL 從原始碼映射連結到 Sass 樣式表。
  • inline 直接在原始碼映射中包含 Sass 樣式表 的文字。
  • none 完全不產生原始碼 映射。
​# Generates a URL like "../sass/style.scss".
$ sass --sourcemap=auto sass/style.scss css/style.css

​# Generates a URL like "file:///home/style-wiz/sassy-app/sass/style.scss".
$ sass --sourcemap=file sass/style.scss css/style.css

​# Includes the full text of sass/style.scss in the source map.
$ sass --sourcemap=inline sass/style.scss css/style.css

​# Doesn't generate a source map.
$ sass --sourcemap=none sass/style.scss css/style.css

--stdin–stdin 永久連結

這個旗標(簡寫為 -s)告訴 Sass 從標準輸入讀取輸入檔案。當傳遞此旗標時,不得傳遞任何輸入檔案。

$ echo -e 'h1\n  font-size: 40px' | sass --stdin
h1 {
  font-size: 40px;
}

--stdin 旗標不能與多對多模式一起使用。

--default-encoding–default-encoding 永久連結

這個選項(簡寫為 -E)控制 Sass 用於載入未明確指定字元編碼的來源檔案的預設字元編碼。它預設為作業系統的預設編碼。

$ sass --default-encoding=Shift-JIS style.scss style.css

--unix-newlines–unix-newlines 永久連結

這個旗標告訴 Sass 產生以 U+000A 換行字元分隔行的輸出檔案,而不是使用作業系統預設值(在 Windows 上,這是 U+000D 回車字元後跟 U+000A 換行字元)。在預設使用 Unix 樣式換行的系統上,它始終為真。

$ sass --unix-newlines style.scss style.css

--debug-info–debug-info 永久連結

這個旗標(簡寫為 -g)會讓 Sass 產生虛擬的 @media 查詢,指示每個樣式規則在原始樣式表中的定義位置。

⚠️ 注意!

這個旗標僅為了向下相容性而存在。現在建議使用原始碼映射來將 CSS 映射回產生它的 Sass。

$ sass --debug-info style.scss
@media -sass-debug-info{filename{font-family:file\:\/\/\/home\/style-wiz\/sassy-app\/style\.scss}line{font-family:\000031}}
h1 {
  font-size: 40px; }

--line-comments–line-comments 永久連結

這個旗標(也稱為 --line-numbers,簡寫為 -l)會讓 Sass 為每個樣式規則產生註釋,指示每個樣式規則在原始樣式表中的定義位置。

$ sass --line-numbers style.scss
/* line 1, style.scss */
h1 {
  font-size: 40px; }

其他選項其他選項 永久連結

--interactive–interactive 永久連結

這個旗標(簡寫為 -i)告訴 Sass 以互動模式執行,您可以在其中編寫SassScript 運算式並查看其結果。互動模式也支援變數

$ sass --interactive
>> 1px + 1in
97px
>> $map: ("width": 100px, "height": 70px)
("width": 100px, "height": 70px)
>> map-get($map, "width")
100px

--check–check 永久連結

這個旗標(簡寫為 -c)告訴 Sass 驗證其輸入檔案的語法是否有效,而不執行該檔案。如果語法有效,它會以狀態 0 退出。它不能在多對多模式中使用。

$ sass --check style.scss

--precision–precision 永久連結

這個選項告訴 Sass 在輸出十進位數字時要使用幾位精度

$ echo -e 'h1\n  font-size: (100px / 3)' | sass --precision=20
h1 {
  font-size: 33.333333333333336px; }

--cache-location–cache-location 永久連結

這個選項告訴 Sass 將其已解析檔案的快取儲存在哪裡,以便在未來呼叫時可以更快地執行。它預設為 .sass-cache

$ sass --cache-location=/tmp/sass-cache style.scss style.css

--no-cache–no-cache 永久連結

這個旗標(簡寫為 -C)告訴 Sass 完全不要快取已解析的檔案。

$ sass --no-cache style.scss style.css

--trace–trace 永久連結

這個旗標告訴 Sass 在遇到錯誤時印出完整的 Ruby 堆疊追蹤。Sass 團隊使用它來除錯錯誤。

Traceback (most recent call last):
        25: from /usr/share/gems/sass/bin/sass:13:in `<main>'
        24: from /usr/share/gems/sass/lib/sass/exec/base.rb:18:in `parse!'
        23: from /usr/share/gems/sass/lib/sass/exec/base.rb:50:in `parse'
        22: from /usr/share/gems/sass/lib/sass/exec/sass_scss.rb:63:in `process_result'
        21: from /usr/share/gems/sass/lib/sass/exec/sass_scss.rb:396:in `run'
        20: from /usr/share/gems/sass/lib/sass/engine.rb:290:in `render'
        19: from /usr/share/gems/sass/lib/sass/engine.rb:414:in `_to_tree'
        18: from /usr/share/gems/sass/lib/sass/scss/parser.rb:41:in `parse'
        17: from /usr/share/gems/sass/lib/sass/scss/parser.rb:137:in `stylesheet'
        16: from /usr/share/gems/sass/lib/sass/scss/parser.rb:697:in `block_contents'
        15: from /usr/share/gems/sass/lib/sass/scss/parser.rb:707:in `block_child'
        14: from /usr/share/gems/sass/lib/sass/scss/parser.rb:681:in `ruleset'
        13: from /usr/share/gems/sass/lib/sass/scss/parser.rb:689:in `block'
        12: from /usr/share/gems/sass/lib/sass/scss/parser.rb:697:in `block_contents'
        11: from /usr/share/gems/sass/lib/sass/scss/parser.rb:708:in `block_child'
        10: from /usr/share/gems/sass/lib/sass/scss/parser.rb:743:in `declaration_or_ruleset'
         9: from /usr/share/gems/sass/lib/sass/scss/parser.rb:820:in `try_declaration'
         8: from /usr/share/gems/sass/lib/sass/scss/parser.rb:1281:in `rethrow'
         7: from /usr/share/gems/sass/lib/sass/scss/parser.rb:807:in `block in try_declaration'
         6: from /usr/share/gems/sass/lib/sass/scss/parser.rb:999:in `value!'
         5: from /usr/share/gems/sass/lib/sass/scss/parser.rb:1161:in `sass_script'
         4: from /usr/share/gems/sass/lib/sass/script/parser.rb:68:in `parse'
         3: from /usr/share/gems/sass/lib/sass/script/parser.rb:855:in `assert_expr'
         2: from /usr/share/gems/sass/lib/sass/script/lexer.rb:240:in `expected!'
         1: from /usr/share/gems/sass/lib/sass/scss/parser.rb:1305:in `expected'
test.scss:1: Invalid CSS after "h1 {font-size: ": expected expression (e.g. 1px, bold), was "}" (Sass::SyntaxError)

--quiet–quiet 永久連結

這個旗標(簡寫為 -q)告訴 Sass 在編譯時不要發出任何警告。預設情況下,當使用已棄用的功能或遇到@warn 規則時,Sass 會發出警告。它也會使@debug 規則靜默。

$ sass --quiet style.scss style.css