Rspack 目前不兼容 mini-css-extract-plugin,但可以使用 CssExtractRspackPlugin 替代,它可以和 css-loader 搭配使用,用于将 CSS 提取成单独文件。
如果你的项目不依赖于 css-loader 和 mini-css-extract-plugin,我们更推荐使用 Rspack 内置的 CSS 解决方案 experiments.css,它的性能更好。
使用 CssExtractRspackPlugin 时,需要在 plugins
中注册插件,并在 module.rules 中注册 CssExtractRspackPlugin.loader
。
CssExtractRspackPlugin 插件的选项。
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
filename | string | "[name].css" | CSS 产物的名称,请参考 output.filename |
chunkFilename | string | "[name].css" | 异步加载的 CSS 产物的名称,如果不设置则会使用 filename ,请参考 output.chunkFilename |
ignoreOrder | boolean | false | 若某些 CSS 在不同 chunk 中顺序有冲突,是否发出警告。例如 entryA 引入 a.css 和 b.css,entryB 引入 b.css 和 a.css,a.css 和 b.css 的顺序无法确定 |
insert | string | ((linkTag: HTMLLinkElement) => void) | undefined | 决定 link 标签怎样插入到页面,如果传入 string 类型,则会视为 DOM 选择器,link 标签会插入到该选择器对应的元素后。如果传入 function 类型,则会将 function 转成字符串,在运行时进行调用,参数是 link 标签 |
attributes | Record<string, string> | undefined | 设置 link 标签的自定义 attributes,仅对异步加载的 CSS 文件生效 |
linkType | string | 'text/css' | false | "text/css" | 设置 link 标签的 type 属性值,仅对异步加载的 CSS 文件生效 |
runtime | boolean | true | 是否注入 runtime 代码以加载 CSS。如果禁用,CSS 仍然会被提取,可用于自定义的加载方式 |
pathinfo | boolean | false | 是否在 CSS 产物中包含带有更详细的路径信息的注释 |
CssExtractRspackPlugin.loader
的选项。
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
publicPath | string | ((resourcePath: string, context: string) => string) | output.publicPath | 为 CSS 中的外部资源(如图片、文件等)指定自定义的 publicPath |
emit | boolean | true | 如果为 true,则输出 CSS 文件。如果为 false,则插件将提取 CSS,但不会输出文件 |
esModule | boolean | true | 在生成的 JavaScript 模块中,是否使用 ES 模块语法进行 CSS Modules 类名导出 |
请注意,当打开内置 CSS 支持(experiments.css
)时,.css
结尾的文件会被默认视为 css/auto
模块,此时如果想要使用该插件,请确保设置了 CssExtractRspackPlugin.loader
的 rule 类型都用 javascript/auto
覆盖了默认的 css/auto
类型。
例如: