1.使用npm ,node,webpack的新版本
2文件用loader是要把exclude:/node_modules/去除是js
或使用include:path.resoleve(_dirname,'../src')只会打包src目录下的文件
3尽量不要使用一些打包插件这样会降低他们的打包速度
4尽量使用官方社区的插件,其他插件可以实现功能,但是可能忽略他们的性能
5.合理优化resolve配置项
resolve:{
extensions:['js','jsx']//当引入index是可以使js或jsx
mainFiles:['index','xxx'],找默认文件夹的index文件
alias:{//别名作用场景:当嵌套目录过多时找文件就会很麻烦所以可以用别名alias
'自己起的名字':path.resolve(_dirname,'路径')
}
}
6.使用DLLPlugin提高打包速度在大型项目是用的非常多的
第三方模块值打包一次以后就不用打包了
在webpack.dll.js中
module.export={
entry:'',
output:{
path:path.resolve(_dirname,'url'),
filename:'[name].dll.js',
libary:''.
},
plugins:{
new webpack.DllPlugin({映射文件
name:'[name]',
path:path.resolve(_dirname,'url')
})
}
}
在公共webpack.common.js中安装add-asset-html-webpack-plugin中
new AddHtmlWebpackPlugin({//在html增加静态文件
filepath:path.resolve(_dirname,'url')
}),
new webpack.DllReferencePlugin({
manifest:path.resolve(_dirname,'打包好url')
})
注意:当有多个第三方模块时,可以动态加载
const fs= require('fs');node的相关语法
const filesName = fs.readdirSync(path.resolve(_dirname,'打包好文件夹路径'))获取文件夹下文件name他是一个数组
然后用filesName.forEach(file=>{
if(/.*\./dll.js/.test(file)){
plugin.push(
new AddHtmlWebpackPlugin({//在html增加静态文件
filepath:path.resolve(_dirname,'url')
}),
)
}
if (/.*\.mainfest.json/.test(file)){
plugin.push(
new webpack.DllReferencePlugin({
manifest:path.resolve(_dirname,'打包好url',file)
})
)
}
})
7.控制包文件大小用treeshaking,tread-loader,parallel-webpack(多页面打包),happypack多进程打包
通过stats分析打包结果,那个阶段耗时比较多就对其做优化
8.无插件的剔除
webpack打包优化
最新推荐文章于 2024-08-23 17:00:36 发布