如何防止 Webpack 删除输出路径中的其他文件?

How to prevent Webpack from removing other files in output path?

假设我将一些 JS 资源编译为 dist/static/js:

output: {
        path: config.build.assetsRoot,
        filename: utils.assetsPath('js/[name].[chunkhash].js'),
        chunkFilename: utils.assetsPath('js/[id].[chunkhash].js'),
    },

在 运行 npm run build 之前,我在 /dist/、/static/ 和 /js/ 中创建了一个文件。

运行npm run build之后,此文件已删除。在 /static/ 和 /js/ 中创建的那个不见了。我该如何预防?

我正在使用 Vue。js/Webpack 样板文件: https://github.com/vuejs-templates/webpack

如果你看这里:

https://github.com/vuejs-templates/webpack/blob/17ed63b1b3a0eaaebd3f593c08c32107a7cb7e01/template/build/build.js

可以看到正在导入一个名为rimraf的包:

const rm = require('rimraf')

这个包负责清除你的assetsRootassetsSubDirectory。这是一件好事,因为通常当您从头开始重新运行 构建过程时,您希望从头开始。

我建议你不要禁用它,而是将你的文件放在另一个目录中,或者让你的 Javascript 生成你的文件,因为删除发生在编译之前。