SwcJsMinimizerRspackPlugin
Rspack only
此插件使用 SWC 来压缩 JavaScript 代码。
示例
通过 optimization.minimizer 使用此插件:
module.exports = {
// ...
optimization: {
minimizer: [
new rspack.SwcJsMinimizerRspackPlugin({
// options
}),
new rspack.LightningCssMinimizerRspackPlugin(),
],
},
};
选项
test
- 类型:
string | RegExp | Array<string | RegExp>
- 默认值:
undefined
指定需要被压缩的产物文件。可以使用正则表达式或者文件路径字符串,只有匹配的文件会被压缩。
例如,构建生成了 /dist/foo.[hash].js
和其他 JS 文件,我们仅对 foo.js
进行压缩:
new rspack.SwcJsMinimizerRspackPlugin({
test: /dist\/foo\.\w+\.js$/,
});
include
- 类型:
string | RegExp | Array<string | RegExp>
- 默认值:
undefined
与 test
的作用一致,指定需要被压缩的产物文件。
new rspack.SwcJsMinimizerRspackPlugin({
include: /dist\/foo\.\w+\.js$/,
});
exclude
- 类型:
string | RegExp | Array<string | RegExp>
- 默认值:
undefined
指定需要被排除的产物文件。可以使用正则表达式或者文件路径字符串,匹配的文件不会被压缩。
例如,构建生成了 /dist/foo.[hash].js
和其他 JS 文件,我们排除 foo.js
的压缩:
new rspack.SwcJsMinimizerRspackPlugin({
exclude: /dist\/foo\.\w+\.js$/,
});
type ExtractCommentsOptions =
| boolean
| RegExp
| {
condition?: boolean | RegExp | undefined;
banner?: string | boolean | undefined;
};
是否将注释提取到单独的文件中。如果原始文件名是 foo.js
,则注释将提取到 foo.js.LICENSE.txt
文件中。
boolean
如果值为 true
,等同于 /@preserve|@lic|@cc_on|^\**!/
正则表达式,并移除其他的注释。
new rspack.SwcJsMinimizerRspackPlugin({
extractComments: {
condition: /@preserve|@lic|@cc_on|^\**!/,
},
});
如果值为 false
,则移除所有注释。
new rspack.SwcJsMinimizerRspackPlugin({
extractComments: false,
});
RegExp
如果值为 RegExp
,则将匹配的注释提取到单独的文件中。
new rspack.SwcJsMinimizerRspackPlugin({
extractComments: /@preserve|@lic|@cc_on|^\**!/,
});
object
如果值为 object
,则可以使用 condition
和 banner
来自定义注释的提取。
new rspack.SwcJsMinimizerRspackPlugin({
extractComments: {
// 将匹配的注释提取到单独的文件中
condition: /@preserve|@lic|@cc_on|^\**!/,
// 在 `*.LICENSE.txt` 文件顶部的横幅
// 如果为 `true`,则使用默认的横幅 `/*! For license information please see {relative} */`
// 如果为 `false`,则不添加横幅
// 如果为 `string`,则使用给定的横幅
banner: true,
},
});
minimizerOptions
type MinimizerOptions = {
minify?: boolean;
module?: boolean;
mangle?: TerserMangleOptions | boolean;
compress?: TerserCompressOptions | boolean;
format?: JsFormatOptions & ToSnakeCaseProperties<JsFormatOptions>;
};
const defaultOptions = {
minify: true,
mangle: true,
compress: {
passes: 1,
}
format: {
comments: false,
},
};
类似于 SWC 的 jsc.minify
选项,请参考 SWC - Minification 了解所有可用的选项。
例如,关闭 mangle
来避免对变量名进行混淆:
new rspack.SwcJsMinimizerRspackPlugin({
minimizerOptions: {
mangle: false,
},
});