上一章讲的是分离样式,这一章讲的是剩下的一些我经常使用的插件,和上一章是没有任何关系。webpack
$ mkdir 0x0016-other-plugin $ cd 0x0016-other-plugin $ npm init -y $ vim webpack.config.js // ./webpack.config.js const path = require('path'); module.exports = { entry : { 'index': ['./src/index.js'], }, output: { path : path.join(__dirname, 'dist'), filename: '[name].bundle.js' } ;
EnvironmentPlugin
定义环境插件介绍
这个插件用来定义环境变量的,直接定义在了process.env
下。git
修改配置github
plugins: [ new webpack.EnvironmentPlugin({ NODE_ENV:'development', DEBUG:false }) ]
编写代码web
if (process.env.NODE_ENV==='production') { console.log('Welcome to production'); } if (process.env.DEBUG) { console.log('Debugging output'); }
编译并查看结果npm
/* 1 */ /***/ (function(module, exports, __webpack_require__) { if (false) { console.log('Welcome to production'); } if (false) { console.log('Debugging output'); } /***/ })
更多配置请查阅webpack关于EnvironmentPlugin相关章节vim
CleanWebpackPlugin
清除文件夹插件介绍
这个插件用来清除某个路径下的文件的,通常用来清理上次打包以后的残留文件。segmentfault
不使用插件打包文件
这里咱们修改一下output.filename:
为[name].[chunkhash].js'
,这样每次输出的文件就都不同了ui
打包代码this
$ webpack // ./dist index.dfa7ddd294976d60a25f.js
修改代码插件
// ./src/index.js if (process.env.NODE_ENV==='production') { console.log('Welcome to production'); } if (process.env.DEBUG) { console.log('Debugging output'); } console.log('clearwebpackplugin')
再次打包
$ webpack // ./dist index.69ed567b40b7234d1ea4.js index.dfa7ddd294976d60a25f.js
能够看到,上次打包的文件依旧在,这不方面咱们直接部署到线上,手动删除可不符合webpack
的初衷,因此须要用到这个插件
安装依赖
$ cnpm install --save-dev clean-webpack-plugin
修改依赖
const path = require('path'); var webpack = require('webpack') const CleanWebpackPlugin = require('clean-webpack-plugin') module.exports = { entry : { 'index': ['./src/index.js'], }, output: { path : path.join(__dirname, 'dist'), filename: '[name].[chunkhash].js' }, plugins: [ new webpack.EnvironmentPlugin({ NODE_ENV: 'development', DEBUG : false }), new CleanWebpackPlugin(path.resolve(__dirname, 'dist')) ] };
打包编译
$ webpack // ./dist index.69ed567b40b7234d1ea4.js
啊世界清静了,之前的文件都没了!
更多配置请查看clean-webpack-plugin官方文档
copyWebpackPlugin
复制文件插件介绍
用来直接复制文件的,好比资源文件,有一些文件咱们但愿他不打包到js
中,可是又须要部署到生成环境下,为了方便部署,将它们和要部署的文件放在同一个文件夹下,方便部署。
安装依赖
$ cnpm install --save-dev copy-webpack-plugin
添加资源
$ mkdir ./asset $ cd ./asset $ vim resource.txt this is resource!
修改配置
const path = require('path'); const webpack = require('webpack') const CleanWebpackPlugin = require('clean-webpack-plugin') const CopyWebpackPlugin=require('copy-webpack-plugin') module.exports = { entry : { 'index': ['./src/index.js'], }, output: { path : path.join(__dirname, 'dist'), filename: '[name].[chunkhash].js' }, plugins: [ new webpack.EnvironmentPlugin({ NODE_ENV: 'development', DEBUG : false }), new CleanWebpackPlugin(path.resolve(__dirname, 'dist')), new CopyWebpackPlugin([ { from:path.resolve(__dirname,'asset'), to:path.resolve(__dirname,'dist/asset') } ]) ] };
打包
$ webpack // ./dist asset -resource.txt index.69ed567b40b7234d1ea4.js
其余更多配置请查阅webpack关于CopyWebpackPlugin