預設集

什麼是預設集?

從版本 4 開始,預設集是一種根據您的使用案例載入具有不同功能的 cssnano 的方法。現在,您不必選擇退出進階轉換,而是可以選擇加入。在引入預設集之前,無論是否使用,執行進階轉換的程式碼都會從 npm 下載。預設集確保不再是這種情況,並且還提供了儲存 cssnano 設定以便在多個環境中重複使用的能力。

預設集如何運作?

cssnano 執行幾個不同的操作來檢查它應該使用哪個預設集。首先,它會檢查它在初始化時是否已載入預設集;如果是,它將使用該預設集。例如,在專案根目錄中使用 postcss.config.js

module.exports = {
    plugins: [
        require('cssnano')({
            preset: 'default',
        }),
    ],
};

預設集名稱指向一個可解析的節點模組,可以選擇使用 cssnano-preset- 前綴。因此,如果您願意,可以在這裡指定 cssnano-preset-default

如果您需要將任何選項傳遞給預設集,則必須使用陣列語法指定它們。例如,您可以使用以下設定移除所有註釋

module.exports = {
    plugins: [
        require('cssnano')({
            preset: ['default', {
                discardComments: {
                    removeAll: true,
                },
            }]
        }),
    ],
};

對於未明確設定預設集的其他情況,cssnano 將在您的 package.jsoncssnano.config.js 中尋找一個區段,從目前工作目錄向上搜尋,直到到達您的家目錄。這兩個設定範例的功能與上述相同

{
  "name": "awesome-application",
  "cssnano": {
    "preset": [
      "default",
      {"discardComments": {"removeAll": true}}
    ]
  }
}

以及 cssnano.config.js

const defaultPreset = require('cssnano-preset-default');

module.exports = defaultPreset({
    discardComments: {
        removeAll: true,
    },
});

如果您需要使用可以接受函數作為參數的轉換,以便更具體的使用案例,則 cssnano.config.js 很有用。

如果 cssnano 未明確載入預設集,或者在任何父目錄中找不到設定區段/檔案,則將載入預設值。一個 postcss.config.js 範例

module.exports = {
    plugins: [
        require('cssnano'),
    ],
};

對於大多數使用案例,預設預設集應該適合您的需求,但我們也提供了一個執行更積極轉換的進階預設集。您可以在我們的進階轉換指南中閱讀更多相關資訊。

選項語法

選項遵循一個簡單的模式 - 可選的 postcss- 前綴被移除,然後其餘部分應轉換為 camelCase。因此,如果您需要為 postcss-svgo 設定選項,您可以執行

module.exports = {
    plugins: [
        require('cssnano')({
            preset: ['default', {
                svgo: {
                    plugins: [{
                        name: 'preset-default',
                        params: {
                            overrides: {
                                removeDoctype: false,
                            },
                        },
                    }],
                },
            }],
        }),
    ],
};

排除轉換

如果您的建置不需要轉換,您可能希望將其從清單中排除;有兩種可能的方法可以做到這一點。第一種是將選項鍵設定為 false

module.exports = {
    plugins: [
        require('cssnano')({
            preset: ['default', {
                svgo: false,
            }],
        }),
    ],
};

或者,如果您已經提供選項並且希望暫時排除轉換,您可以設定 exclude 選項

module.exports = {
    plugins: [
        require('cssnano')({
            preset: ['default', {
                svgo: {
                    exclude: true,
                },
            }],
        }),
    ],
};

最後更新時間:2024 年 6 月 5 日星期三 10:27:34 GMT