Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何防止CleanWebpackPlugin删除静态文件_Webpack - Fatal编程技术网

如何防止CleanWebpackPlugin删除静态文件

如何防止CleanWebpackPlugin删除静态文件,webpack,Webpack,我正在使用CopyWebpackPlugin将静态文件复制到分布式文件夹,但是CleanWebpackPlugin在使用--watch模式时会将其删除。因此,第一次复制文件时,第二次删除文件而不是重新复制 // webpack config plugins: [ new CopyWebpackPlugin([ { from: resolvePath('static'), to: resolvePath(isCordova ? 'cordova/www/stat

我正在使用CopyWebpackPlugin将静态文件复制到分布式文件夹,但是CleanWebpackPlugin在使用--watch模式时会将其删除。因此,第一次复制文件时,第二次删除文件而不是重新复制

// webpack config
plugins: [
  new CopyWebpackPlugin([
    {
      from: resolvePath('static'),
      to: resolvePath(isCordova ? 'cordova/www/static' : 'www/static'),
    },
  ]),
  new CleanWebpackPlugin()
]

这两个模块一起工作,有没有修复方法?

我终于创建了自己的网页插件

const shell = require('shelljs')
const path = require('path');

function resolvePath(dir) {
  return path.join(__dirname, '../../../', dir);
}

module.exports = class CleanPlugin {
  // Define `apply` as its prototype method which is supplied with compiler as its argument
  apply(compiler) {
    // Specify the event hook to attach to
    compiler.hooks.emit.tapAsync(
      'CleanPlugin',
      (compilation, callback) => {
        let command = `rm -rf ${resolvePath("cordova/www")}/*.json`
        shell.exec(command)
        callback()
      }
    )
  }
}
并按如下方式使用:

// require the module
const CleanPlugin = require('./webpack-plugins/clean-plugin/clean-plugin-class')

// inject in plugins array in webpack config file
new CleanPlugin()
正如您所见,它只是在每次重建时运行一个shell命令(即使在监视模式下)。这个shell命令非常具体,我可以根据需要管理它


如果您有多个或多个shell命令,您可以使用外部文件并将所有逻辑放在那里。

显然,
CopyWebpackPlugin
复制的文件会被视为过时文件并被删除。这使我能够跳过清理由
CopyWebpackPlugin
复制的文件:

新的CleanWebpackPlugin({
CleanStaleWebPackageAssets:false,
}),

我尝试了
新的CleanWebpackPlugin({exclude:['static*',}),
和其他一些东西,但它似乎不起作用。静态目录保留,但其内容已删除