plugins: [ new webpack.ProvidePlugin({}), new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/), ]
有的插件是开发模式不用,到生产模式下才用,可以下设置css
//PRODUCTION 指生产模式 PRODUCTION && Array.prototype.push.apply(config.plugins, [ new webpack.optimize.UglifyJsPlugin(), new webpack.optimize.OccurrenceOrderPlugin(true), ]);
一直很疑惑,为何有的插件是包装在webpack中的webpack.plugin
,有的是裸奔的plugin
,专门去官方关注了一下这个问题,终于搞清楚了html
官方解释以下vue
翻译一下,经过webpack配置的属性包含在你模块中的插件,再简单易懂点,就是webpack本身的,全部权问题,嘿嘿。。。jquery
new webpack.ProvidePlugin({})
非内置,经过npm或其余方法发布的webpack
new HtmlWebpackPlugin({ template: './src/index.html' })
用途:$
出现,就会自动加载模块;$
默认为'jquery'
的exportsgit
用法:github
new webpack.ProvidePlugin({ $: 'jquery', })
用途:定义全局常量web
用法:npm
new webpack.DefinePlugin({ 'process.env': { NODE_ENV: JSON.stringify(process.env.NODE_ENV) }, PRODUCTION: JSON.stringify(PRODUCTION), APP_CONFIG: JSON.stringify(appConfig[process.env.NODE_ENV]), }),
用途:忽略regExp
匹配的模块api
用法: new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/)
用途:分离css文件
用法: new ExtractTextPlugin(PRODUCTION ? '[name]-[chunkhash].css' : '[name].css')
用途:重构入口html,动态添加<link>
和<script>
,在以hash命名的文件上很是有用,由于每次编译都会改变
用法:
new HtmlWebpackPlugin({ template: './src/index.html' })
用途:js压缩
用法: new webpack.optimize.UglifyJsPlugin()
用途:排序输出
经过模块调用次数给模块分配ids,经常使用的ids就会分配更短的id,使ids可预测,减少文件大小,推荐使用
用法: new webpack.optimize.OccurrenceOrderPlugin(true)
用途:合并公共模块为单独文件,好比全局通用的js等,长期不会修改的,从而能够从缓存中取,优化网页性能
用法:
new webpack.optimize.CommonsChunkPlugin({ names: ['vendor'] })
用途:webpack1到webpack2迁移过渡专用,就像名字说的那样,loader选项插件,对于暂时不支持loader的options的属性,使用此插件
用法:以下,为vue 配置postcss
new webpack.LoaderOptionsPlugin({ vue: { // use custom postcss plugins postcss: function(webpack) { return [ require('postcss-mixins'), ]; } } }),