接上一篇webpack4.0配置记录(1),继续记录学习webpack配置。
定义环境变量
1 | new Webpack.DefinePlugin({//用来定义全局环境变量 |
webpack简单优化
noParse
1
2
3module:{
noParse:'/jquery/',//不去解析设置的包所依赖的关系,如jquery
}ignorePlugin
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19module:{
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插件排除某些包,减少体积。
1 | new webpack.IgnorePlugin(/\.\/locale/,/moment/), |
以上配置忽略了时间格式化moment.js中的语言包
happypack多线程打包
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40let 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'
]
}
}
]
})
]
}webpack内置功能
(1)tree-shaking
(2)scope-hosting
这两项优化只在生产环境下有效- 抽离公共代码
1 | module.exports={ |
- 文件热更新
1 | devServer:{ |
7.可以使用dllPlugin动态链接库优化
DllPlugin 和 DllReferencePlugin提供了以大幅度提高构建时间性能的方式拆分软件包的方法。原理是将特定的第三方NPM包模块提前构建,然后通过页面引入。这不仅能够使得vendor文件可以大幅度减小,同时,也极大的提高了构件速度。网上别的大神有一篇文章写的很详细,可以参考,传送门。
以上就是一些自己在学习webpack4.0配置过程中的一些学习记录,写出来和大家分享,如果有错误,还望告知。欢迎关注交流!不要忘了点个赞,谢谢!