Webpack / webpack-cleanup-plugin:仅执行清理的webpack.config.js

时间:2019-12-26 14:36:38

标签: webpack

是否可以配置仅进行清理的webpack.config.js(使用“ webpack-cleanup-plugin”),而不必配置entryoutput参数?

1 个答案:

答案 0 :(得分:0)

如果您想运行清理插件但不希望webpack捆绑文件,那么这是不可能的,因为webpack的主要目标是捆绑您的依赖项,并且像cleanup这样的任务是附加组件

除了回答您的问题之外,也许还有更好的方法

  

无需配置输入或输出参数?

是的,如果您不指定输入或输出参数,则Webpack 4可以实现,它将使用默认值src/index.js输入,dist输入output.folder

如果找不到入口文件,Webpack将引发错误 因此,如果您不指定条目,那么项目中必须存在src/index.js

所以可以说您的文件夹结构如下

| src
     |index.js
| libs
| build

现在,如果您要清理build目录,则可以创建类似这样的配置

const { CleanWebpackPlugin } = require('clean-webpack-plugin');
const path = require('path');

module.exports = {
  plugins: [
    new CleanWebpackPlugin({
      // takes an array so you can specify multiple patterns
      // build/**/* will clean everything inside build but not build directory itself
      cleanOnceBeforeBuildPatterns: [path.resolve(process.cwd(), 'build/**/*')]
    }),
  ]
};

请注意,现在您需要指定cleanOnceBeforeBuildPatterns,因为默认情况下clean-webpack-plugin

  

将删除webpack的output.path目录内的所有文件

,我们没有指定output.path,所以它的默认值是dist更准确,是path.resolve(process.cwd(), 'dist'),但是我们想清除build内的所有内容

您可以指定其他选项,例如

cleanOnceBeforeBuildPatternscleanAfterEveryBuildPatterns或事件,如果要在项目外部进行清理,则无法将dangerouslyAllowCleanPatternsOutsideProject设置为true 更多信息here

因为使用此配置运行webpack还将创建dist/main.js捆绑包,因此我们也需要删除该捆绑包,以便您的脚本看起来像这样

  "scripts": {
    "clean": "webpack --config webpack.config.js && rm -rf ./dist"
  }

一种更简单的方法是在package.json文件中指定一个简单的bash命令,例如

  "scripts": {
    "clean": "rm -rf ./build/**"
  }

,您可以像yarn cleannpm run clean

一样运行它