webpack打包优化之减少代码体积(Tree shaking、babel)

Treeshaking是Webpack的优化技术,通过分析ES6模块引用,移除未使用的代码以减小文件体积。Babel在转译ES6+至ES5时可能增加冗余代码,通过@babel/plugin-transform-runtime插件,可减少辅助代码并避免全局污染,提高代码效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Tree shaking (摇树优化)

Webpack打包中的tree shaking指的是通过静态分析代码引用关系,在构建时仅打包项目中实际使用到的代码,从而将未使用过的代码排除在构建产物之外,减小项目体积。

在Tree shaking过程中,Webpack会自动分析项目中每个模块的引用关系,只有被引用过的模块和代码块才会被打包到输出文件中,未被引用的模块和代码块则会被删除,以减少输出文件大小。这样就可以标记和删除没有使用过的代码,从而减小打包后文件的体积,提升网站性能。

值得注意的是tree shaking的必要条件之一为ES6模块化,因为ES6模块化中的代码引用关系是明确的静态分析关系,使得Webpack能够方便地判断哪些代码需要被打包。而对于CommonJS模块和AMD模块,因引用关系不可确定,无法做到tree shaking。因此在开发时候应该遵循ES6模块化的规范。

关于使用

这个功能我们不需要额外配置什么,webpack已经自动开启了这个功能
这也是我们用webpakc构建项目的好处之一

二、babel编译优化

babel会对ES6及以上的代码进行转译成ES5的代码,而ES5的代码存在一些冗余的部分,也就是所谓的辅助代码。因此会增加代码的体积。

Babel 对一些公共方法使用了非常小的辅助代码,比如 _extend。默认情况下会被添加到每一个需要它的文件中。

在babel的配置中关闭部分不必要的转译功能来减少代码的体积。

什么是@babel/plugin-transform-runtime

@babel/plugin-transform-runtime是一个Babel插件,用于将Babel转换代码时使用的工具函数替换为较小的运行时版本以减小打包后文件的体积。 这个插件使用了babel-runtime作为运行时的源模块,而不是将其内联到每个编译后的模块中。

使用@babel/plugin-transform-runtime可以避免重复的代码并提供其他功能,如对内置对象的Polyfills支持。此外,它还可以避免污染全局命名空间,因为它将其所有依赖项都打包到一个单独的模块中。这使得它适用于任何类型的项目,包括library的构建。

使用

下载:

npm i @babel/plugin-transform-runtime -D

配置:

module.export = {
	module: {
		rules: [
			{
            test: /\.js$/,
            include: path.resolve(__dirname, "../src"), 
            use: [
              {
                loader: "babel-loader",
                options: {
                  plugins: ["@babel/plugin-transform-runtime"], // 减少代码体积
                },
              },
            ],
          },
		]
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jieyucx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值