• 1. 为什么要用 clean-webpack-plugin
  • 2. 使用 clean-webpack-plugin

    其实 clean-webpack-plugin 很容易知道它的作用,就是来清除文件的。

    一般这个插件是配合 webpack -p 这条命令来使用,就是说在为生产环境编译文件的时候,先把 build或dist (就是放生产环境用的文件) 目录里的文件先清除干净,再生成新的。

    1. 为什么要用 clean-webpack-plugin

    如果还不理解为什么要用它,就看看下面的例子就可以知道的。

    webpack.config.js

    1. const path = require('path')
    2. ...
    3. module.exports = {
    4. entry: {
    5. "app.bundle": './src/app.js'
    6. },
    7. output: {
    8. path: path.resolve(__dirname, 'dist'),
    9. filename: '[name].[chunkhash].js'
    10. },
    11. ...
    12. };

    在终端上运行:

    1. $ npm run prod

    9. 用 clean-webpack-plugin 来清除文件 - 图1

    看看 dist 目录:

    1. dist
    2. ├── app.bundle.e56abf8d6e5742c78c4b.js
    3. ├── index.html
    4. └── style.css

    你再把 src/app.js 改改内容,然后再执行 npm run prod

    9. 用 clean-webpack-plugin 来清除文件 - 图2

    再多运行几次,生成的带 hash 的 app.bundle.js 文件就会很多。

    1. dist
    2. ├── app.bundle.0e380cea371d050137cd.js
    3. ├── app.bundle.259c34c1603489ef3572.js
    4. ├── app.bundle.e56abf8d6e5742c78c4b.js
    5. ├── index.html
    6. └── style.css

    这些带 hash 的 app.bundle.js 只有最新的才有用,其他的都没用,我们要在 build 之前把它们全清空,这真是 clean-webpack-plugin 发挥的作用。

    2. 使用 clean-webpack-plugin

    首先来安装。

    1. $ npm i clean-webpack-plugin --save-dev

    webpack.config.js

    1. const path = require('path')
    2. ...
    3. const CleanWebpackPlugin = require('clean-webpack-plugin');
    4. let pathsToClean = [
    5. 'dist',
    6. ]
    7. module.exports = {
    8. entry: {
    9. "app.bundle": './src/app.js'
    10. },
    11. output: {
    12. path: path.resolve(__dirname, 'dist'),
    13. filename: '[name].[chunkhash].js'
    14. },
    15. ...
    16. plugins: [
    17. new CleanWebpackPlugin(pathsToClean),
    18. ...
    19. new ExtractTextPlugin('style.css')
    20. ],
    21. ...
    22. };

    现在运行 npm run prod 试试,只有下面的文件:

    1. dist
    2. ├── app.bundle.0e380cea371d050137cd.js
    3. ├── index.html
    4. └── style.css

    先到这里。