webpack优化

本文介绍了webpack的优化策略,包括sourceMap的使用以方便错误定位,HotModuleReplacement提升开发效率,oneOf、include/exclude的配置优化,利用多进程打包加速,Tree Shaking减少代码体积,Babel辅助代码优化,图片压缩,以及多入口代码分割、预加载和预获取策略,最后讨论了网络缓存和解决JavaScript兼容性问题的方法。
摘要由CSDN通过智能技术生成

1.sourceMap

源代码映射,是一个用来生成源代码与构建后的代码一一映射的文件的方案,生成一个.map文件,里面包含源代码和构建后代码每一行、每一列的映射关系。当构建后代码出错了,会通过.map文件,从构建后代码出错位置找到映射后源代码出错位置,从而让浏览器提示源代码文件出错位置,帮助我们更快的找到出错的根源。

//webpack.dev.js
 devtool:"cheap-module-source-map"
// webpack.prod.js
 devtool:"source-map"

2.提升打包构建速度

**HotModuleReplacement,

**(热模块替换),在程序运行中,替换、添加或删除模块,而无需重新加载整个页面

基本配置

开发模式下

//main.js
if(module.hot){
   
    //判断是否支持热模块更新功能
    //重新引入需要热更新的文件
    module.hot.accept("./js/count")
    module.hot.accept("./js/sum")
}

上面处理很麻烦,实际开发借助于其他loader来解决
vue-loader或react-hot-loader

oneOf只执行对应的loader

开发和生产模式下配置
在这里插入图片描述

include/exclude

只能配置其中一个
在这里插入图片描述
Cache缓存
每次打包的时,js文件都要经过Eslint检查和Babel编译,速度比较慢,缓存之前的eslint检查和babel编译结果
生产和开发环境配置

webpack.dev.js
//babel
					{
   
                        test: /\.m?js$/,
                        //排除node_module中的js文件不处理
                        exclude: /(node_modules|bower_components)/,
                        loader: 'babel-loader',
                        options: {
   
                            // presets: ['@babel/preset-env']
                            cacheDirectory:true,//开启babel缓存
                            cacheCompression:false,//关闭缓存文件压缩
                        } //在babel.config.js维护
                    }
//Eslint

 new ESLintPlugin({
   
            //检测哪些文件
            context: path.resolve(__dirname, '../src'),
            exclude:"node_modules",
            cache:true,//开启缓存
            cacheLocation:path.resolve(__dirname,'../node_modules/.cache/eslintcache')
        }),

多进程打包

js文件同时Eslint检查,babel编译,terser压缩
注意:仅在特别耗时的操作中使用,因为每个进程启动就有大约为600ms左右开销
使用步骤:
1.获取cpu核数,启动的进程的数量就是我们cpu的核数

const os=require('os')
const threads=os.cpus().length

2.下载包
npm i thread-loader -D

//js的loader再配置thread-loader
                    {
   
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值