为什么我的 Webpack-cleanup-plugin 会删除我的排除文件?

Ann*_*nie 4 webpack webpack-plugin

背景:一个简单的单页React应用程序+ Redux + Express(以便上传到Heroku)。
我的公共文件夹中已经有index.html 和images 文件夹。我想运行 webpack 来生成我在 index.html 中使用的 styles.css 和 bundle.js。我想使用 webpack-clean-up-plugin 在每次运行构建时删除额外的先前文件,但我不希望这影响像 index.html 和 images 文件夹这样的东西。
根据文档: *选项 如果您想在输出路径中保留某些文件,例如从其他插件生成的 stats.json 文件,请使用排除数组选项。它接受小型匹配中的通配符。

// 不要删除stats.json, important.json, 以及其中的所有内容folder

new WebpackCleanupPlugin({
  exclude: ["stats.json", "important.js", "folder/**/*"],
})
Run Code Online (Sandbox Code Playgroud)

目标:运行 webpack.prod.js 所以最后 public 文件夹有

  • 索引.html
  • 捆绑包.js
  • Bundle.js.map
  • 样式.css
  • 样式.css.地图
  • 图片(文件夹)

Webpack.config.prod.js

const { CleanWebpackPlugin } = require('clean-webpack-plugin')  
output: {
        path: path.join(__dirname, 'public'),
        filename: 'bundle.js'
    }, 
    plugins: [
        new MiniCssExtractPlugin({ 
            filename: "styles.css", 
            chunkFilename: "[id].css"}),
         new CleanWebpackPlugin({
         exclude: ["index.html", "images/*"],
        })
      ],  
Run Code Online (Sandbox Code Playgroud)

当前结果:
每次我 npm run

"build:prod": "webpack --config webpack.config.prod.js --mode production",
Run Code Online (Sandbox Code Playgroud)

我会删除我的index.html 和images 文件夹。那我哪里写错了?

S.S*_*ith 7


使用此选项代替排除

cleanOnceBeforeBuildPatterns: ["**/*", "!stats.json","!important.js", "!folder/**/*"]
Run Code Online (Sandbox Code Playgroud)

这对我有用:)。例子:

new CleanWebpackPlugin({
    root: process.cwd(),
    verbose: true,
    dry: false,
    cleanOnceBeforeBuildPatterns: ["**/*", "!stats.json","!important.js", "!folder/**/*"],
})
Run Code Online (Sandbox Code Playgroud)