接上一篇webpack4.0配置记录(1),继续记录学习webpack配置。vue
new Webpack.DefinePlugin({//用来定义全局环境变量 DEV:JSON.stringify('dev'), FLAG:'true' }),
module:{ noParse:'/jquery/',//不去解析设置的包所依赖的关系,如jquery }
module:{ noParse:'/jquery/',//不去解析设置的包所依赖的关系 rules:[ { test:/\.js$/, exclude:/node_modules/, include:path.resolve('src'), use:{ loader:'babel-loader', options:{ presets:[ '@babel/preset-env', '@babel/preset-react' ] } } } ] }
经过exclude排除和include包含某些模块
另外也可使用webpack自带的ignorePlugin插件排除某些包,减小体积。node
new webpack.IgnorePlugin(/\.\/locale/,/moment/),
以上配置忽略了时间格式化moment.js中的语言包react
let Happypack=require('happypack') ... module.exports={ module:{ noParse:'/jquery/',//不去解析设置的包所依赖的关系 rules:[ { test:/\.js$/, exclude:/node_modules/, include:path.resolve('src'), use:'Happypack/loader?id=js' // use:{ // loader:'babel-loader', // options:{ // presets:[ // '@babel/preset-env', // '@babel/preset-react' // ] // } // } } ] }, plugins:[ new Happypack({ id:'js', use:[ { loader:'babel-loader', options:{ presets:[ '@babel/preset-env', '@babel/preset-react' ] } } ] }) ] }
(1)tree-shaking
(2)scope-hosting
这两项优化只在生产环境下有效jquery
module.exports={ optimization:{ splitChunks:{//分割代码块 cacheGroups:{//缓冲组 common:{ chunks:'initial', minSize:0,//抽离模块最小粒度是0 minChunks:2//表示代码块用过2次以上就要抽离 }, vendor:{ priority:1,//至关于权重,先抽离第三方模块,若是不设置该属性,分割代码块将从上到下,没法抽离第三方模块。 test:/node_modules/, chunks:'initial', minSize:0,//抽离模块最小是0 minChunks:2//表示用过2次以上就要抽离 } } } }, }
devServer:{ hot:true }, plugins:[ new webpack.NamedModulesPlugin(),//打印更新的模块路径 new webpack.HotModuleReplacementPlugin()//热更新 ]
7.可使用dllPlugin动态连接库优化
DllPlugin 和 DllReferencePlugin提供了以大幅度提升构建时间性能的方式拆分软件包的方法。原理是将特定的第三方NPM包模块提早构建,而后经过页面引入。这不只可以使得vendor文件能够大幅度减少,同时,也极大的提升了构件速度。网上别的大神有一篇文章写的很详细,能够参考,传送门。 webpack
以上就是一些本身在学习webpack4.0配置过程当中的一些学习记录,写出来和你们分享,若是有错误,还望告知。我的博客同步更新,欢迎关注交流!不要忘了点个赞,谢谢!git