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'), ]; } } }),