Closed 18566246732 closed 5 years ago
postcss-loader插入的首选位置应该是css-loader之后,如果没有css-loader,则插入到style-loader之后
if (this.postcss && itemLoader.postcss) { const postcssIndex = ['css', 'css_module'].includes(name) ? itemLoader.use.length : itemLoader.use.length - 1; const postcssLoader = this.createPostCssLoader(loaderOptions && loaderOptions.postcss); itemLoader.use.splice(postcssIndex, 0, postcssLoader); }
之前的这种插入方式会在itemLoader是我自定义的loader时产生bug,比如:
// webpack.config.js loaders: { scss: { // 覆盖原来的 loader use 配置 use: (isBuildProduction ? [] : [styleLoader]).concat(['css-loader', 'sass-loader', { loader: 'sass-resources-loader', options: { // 全局引入 scss,便于引用函数和变量 resources: './app/view/app/main/styles/variable.scss', } }]), }, }
这种场景下postcss-loader会自动插入到sass-loader的后面,导致编译失败。
附上我的pr #63 ,希望能受到你们关注,谢谢
@18566246732 好的,我验证一下
@hubcarl 哈喽,验证的怎么样了?
@18566246732 已经合并修复,已发布 4.11.11 具体见:https://github.com/easy-team/easywebpack/blob/master/CHANGELOG.md 请重新安装依赖即可。
@hubcarl 好的谢谢
结论:
postcss-loader插入的首选位置应该是css-loader之后,如果没有css-loader,则插入到style-loader之后
问题:
之前的这种插入方式会在itemLoader是我自定义的loader时产生bug,比如:
这种场景下postcss-loader会自动插入到sass-loader的后面,导致编译失败。
解决方案:
附上我的pr #63 ,希望能受到你们关注,谢谢