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文件夹中重复的文件的主要内容,如果未能解决你的问题,请参考以下文章
webpack2使用ch3-自动化生成.html和内部引入的js自动更改