webpack2利用插件clean-webpack-plugin来清除dist文件夹中重复的文件

Posted 欧欧欧锋_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了webpack2利用插件clean-webpack-plugin来清除dist文件夹中重复的文件相关的知识,希望对你有一定的参考价值。

配置文件如下

/**
 * Created by oufeng on 2017/5/6.
 */
const webpack = require(\'webpack\');
const path = require(\'path\');
const ExtractTextPlugin = require(\'extract-text-webpack-plugin\');

module.exports = {
    entry: {
        main: \'./app/index.js\',
        vendor: [\'moment\']
    },
    output: {
        filename: \'[name].[chunkhash].js\',
        path: path.resolve(__dirname, \'dist\')
    },
    module:{
        rules:[
            {
                test: /\\.css$/,
                use: ExtractTextPlugin.extract({
                    use: \'css-loader\'
                })
            },
            {
                test: /.woff|.woff2|.svg|.eot|.ttf/,
                use: \'url-loader?prefix=font/&limit=10000\'
            }
        ]
    },
    plugins: [
        new ExtractTextPlugin(\'styles.css\'),
        new webpack.optimize.CommonsChunkPlugin({
            name: \'vendor\',
            minChunks: function (module) {
                // 该配置假定你引入的 bootstrap 存在于 node_modules 目录中
                return module.context && module.context.indexOf(\'node_modules\') !== -1;
            }
        }),
        //为了避免vendor.*.js的hash值发生改变需要输出一个manifest.*.js文件
        new webpack.optimize.CommonsChunkPlugin({
            name: \'manifest\' //But since there are no more common modules between them we end up with just the runtime code included in the manifest file
        })
    ]
};

 

第一次运行  npm run build (webpack)时

dist的文件夹是这样的:

 

第二次 修改一下 "./app/index.js"的内容 再 运行 npm run build 

dist的文件夹是这样的: main.*.js和manifest.*.js都重复增加了一次。

 

 

第三次 修改一下 "./app/index.js"的内容 再 运行 npm run build 

dist的文件夹是这样的: main.*.js和manifest.*.js又重复增加了一次。

 

来到这里楼主表示很无语啊,我run build的时候能不能把 之前的main.*.js和manifest.*.js都删除一次昵,只保留公共的vendor.*.js文件就好啦。

于是使用Googel大法,发现有一个插件叫clean-webpack-plugin可以满足我的需求,而且简单易用。

 

//安装插件
npm install --save-dev clean-webpack-plugin 

 

//引入插件
const CleanWebpackPlugin = require(\'clean-webpack-plugin\');

 

//webpack.config.js中添加CleanWebpackPlugin插件
/**
 * Created by oufeng on 2017/5/6.
 */
const webpack = require(\'webpack\');
const path = require(\'path\');
const ExtractTextPlugin = require(\'extract-text-webpack-plugin\');
const CleanWebpackPlugin = require(\'clean-webpack-plugin\');

module.exports = {
    entry: {
        main: \'./app/index.js\',
        vendor: [\'moment\']
    },
    output: {
        filename: \'[name].[chunkhash].js\',
        path: path.resolve(__dirname, \'dist\')
    },
    module:{
        rules:[
            {
                test: /\\.css$/,
                use: ExtractTextPlugin.extract({
                    use: \'css-loader\'
                })
            },
            {
                test: /.woff|.woff2|.svg|.eot|.ttf/,
                use: \'url-loader?prefix=font/&limit=10000\'
            }
        ]
    },
    plugins: [
        new ExtractTextPlugin(\'styles.css\'),
        new webpack.optimize.CommonsChunkPlugin({
            name: \'vendor\',
            minChunks: function (module) {
                // 该配置假定你引入的 bootstrap 存在于 node_modules 目录中
                return module.context && module.context.indexOf(\'node_modules\') !== -1;
            }
        }),
        //为了避免vendor.*.js的hash值发生改变需要输出一个manifest.*.js文件
        new webpack.optimize.CommonsChunkPlugin({
            name: \'manifest\' //But since there are no more common modules between them we end up with just the runtime code included in the manifest file
        }),
        new CleanWebpackPlugin(
            [\'dist/main.*.js\',\'dist/manifest.*.js\',],  //匹配删除的文件
            {
                root: __dirname,                 //根目录
                verbose:  true,                  //开启在控制台输出信息
                dry:      false                  //启用删除文件
            }
        )
    ]
};

 

这样的配置之后,无论怎么执行多少次的npm run build 后dist的目录都是这个样子的。

 

 

以上是关于webpack2利用插件clean-webpack-plugin来清除dist文件夹中重复的文件的主要内容,如果未能解决你的问题,请参考以下文章

前端入门 —— 了解 webpack 和 各类插件的配置

前端入门 —— 了解 webpack 和 各类插件的配置

今天,你升级Webpack2了吗?

webpack2使用ch3-自动化生成.html和内部引入的js自动更改

Webpack2 不理解我的 SASS 文件中的 @import 语句(如何使用 webpack2 编译 SASS?)

webpack2 终极优化