现在看起来旧文件被覆盖了,无论如何我仍然遇到mix-manifest.json文件没有删除已删除文件的问题,所以如果其他人遇到类似的问题,这就是我的方法解决了。
通过webpackConfig 方法,我使用来自webpack 的splitChunksPlugin,当模块之间有足够的共同代码时,它通过创建额外的块来减少块之间的重复。
这意味着在某些情况下,在 dev 和 prod 环境之间动态添加的块的总数是不同的,因为在开发中文件更大,所以更容易在文件之间共享更多代码。
因此,当构建删除文件时 mix-manifest 文件未更新这一事实导致了一些问题(尤其是在与其他人一起工作时),我想分享一下我是如何解决这个问题的。
1。 Laravel-Mix-Clean
为了避免文件过多,我将在每次构建时删除所有文件。我不得不更改文件夹结构并将正确的路径传递给方法,但这并没有导致很多问题。
npm install laravel-mix-clean --save-dev
在混音文件中
require('laravel-mix-clean');
// [...]
.clean({
cleanOnceBeforeBuildPatterns: ['./js/*'],
});
2。删除清单
让文件同步是不够的,所以我必须在每次新构建时删除清单文件。在我的设置中,我有三个并发构建(每个都有自己的 webpack.mix 文件),所以我不知道哪个会先完成。
解决方案是安装del-cli 包(由clean-webpack-plugin 内部使用,而laravel-mix-clean 又使用它)并在每次构建之前删除清单文件。
npm install del-cli --save-dev
package.json
"scripts": {
"clear-manifest": "del-cli public/mix-manifest.json",
// [...]
"development": "npm run clear-manifest && concurrently \"npm run css-dev\" \"npm run js-dev\" \"npm run js-dev-modern\"",
}
我希望这可以帮助其他有类似问题的人。