问题
项目运行正常,但是打包的时候出现了问题,报了下面这个错误。
找了一圈,好多都说是样式的写法有问题,导致打包出现问题。
但是这真的很难排查,到底哪里样式写的有问题,又或者是不是样式问题?
方案一
于是兜兜转转,又回到了报错本身,找到对应文件,发现了这一行报错代码:
node_modules\@intervolga\optimize-cssnano-plugin\index.js
// Run minification
const promise = postcss([cssnano(cssnanoOptions)])
.process(originalCss, postCssOptions)
.then((result) => {
...
).catch(function(err) {
hasErrors = true;
// throw new Error('CSS minification error: ' + err.message +
// '. File: ' + assetName);
}
);
应该还是 postcss
依赖的问题,但具体目前还排查不出来。
于是我把这行代码注掉,让它顺下去,结果就打包成功了!!
但是这个方法需要改 node_moudles
包文件,不具有普适性,非必要不推荐。
于是又去找其他的解决办法,最后还真让我捞到了一篇靠谱的文章!
方案二(推荐)
删除 vue-cli
自带的压缩 plugin:OptimizeCssnanoPlugin
。
config.plugins.delete('optimize-css')
vue.config.js
module.exports = {
chainWebpack(config) {
config.plugins.delete("preload"); // TODO: need test
config.plugins.delete("prefetch"); // TODO: need test
config.plugins.delete('optimize-css') // 删除 vue-cli 自带的压缩 plugin:OptimizeCssnanoPlugin
}
}
这个方案也可以解决报错问题,顺利打包,而且对打包文件的体积基本没什么影响,推荐!!
参考:
https://www.jianshu.com/p/9e0b3ba734cb