预设

什么是预设?

从版本 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