A webpack plugin to remove your build folder(s) before building
Jeffrey Carpenter d109de8ae2 Bump project version to v1.0.1 from v1.0.0 4 months ago
test fix for issue 84 5 months ago
.gitignore remove idea 2 years ago
.npmignore Exclude `.travis.yml` from published package 2 years ago
.travis.yml add travis-ci, coveralls, and readme badges 3 years ago
LICENSE Initial commit 4 years ago
README.md Update README.md 1 year ago
index.js fix for issue 84 5 months ago
package.json Bump project version to v1.0.1 from v1.0.0 4 months ago


Clean for WebPack

A webpack plugin to remove/clean your build folder(s) before building

MIT License Build Status Coveralls Status


npm i clean-webpack-plugin --save-dev


const CleanWebpackPlugin = require('clean-webpack-plugin')

// webpack config
  plugins: [
    new CleanWebpackPlugin(paths [, {options}])

Example Webpack Config

This is a modified version of WebPack's Plugin documentation that includes the Clean Plugin.

const CleanWebpackPlugin = require('clean-webpack-plugin'); //installed via npm
const HtmlWebpackPlugin = require('html-webpack-plugin'); //installed via npm
const webpack = require('webpack'); //to access built-in plugins
const path = require('path');

// the path(s) that should be cleaned
let pathsToClean = [

// the clean options to use
let cleanOptions = {
  root:     '/full/webpack/root/path',
  exclude:  ['shared.js'],
  verbose:  true,
  dry:      false

// sample WebPack config
const webpackConfig = {
  entry: './path/to/my/entry/file.js',
  output: {
    filename: 'my-first-webpack.bundle.js',
    path: path.resolve(__dirname, 'dist')
  module: {
    rules: [
        test: /\.(js|jsx)$/,
        loader: 'babel-loader'
  plugins: [
    new CleanWebpackPlugin(pathsToClean, cleanOptions),
    new webpack.optimize.UglifyJsPlugin(),
    new HtmlWebpackPlugin({template: './src/index.html'})

Paths (Required)

An [array] of string paths to clean

  'dist',         // removes 'dist' folder
  'build/*.*',    // removes all files in 'build' folder
  'web/*.js'      // removes all JavaScript files in 'web' folder

Options and defaults (Optional)

  // Absolute path to your webpack root folder (paths appended to this)
  // Default: root of your package
  root: __dirname,

  // Write logs to console.
  verbose: true,
  // Use boolean "true" to test/emulate delete. (will not remove files).
  // Default: false - remove files
  dry: false,           

  // If true, remove files on recompile. 
  // Default: false
  watch: false,

  // Instead of removing whole path recursively,
  // remove all path's content with exclusion of provided immediate children.
  // Good for not removing shared files from build directories.
  exclude: [ 'files', 'to', 'ignore' ],

  // allow the plugin to clean folders outside of the webpack root.
  // Default: false - don't allow clean folder outside of the webpack root
  allowExternal: false
  // perform clean just before files are emitted to the output dir
  // Default: false
  beforeEmit: false