首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >webpack-JS-Tree-Shaking

webpack-JS-Tree-Shaking

原创
作者头像
程序员NEO
发布2023-09-28 22:30:04
发布2023-09-28 22:30:04
4210
举报

Tree-Shaking 概述

过滤掉无用的 JS 代码和 CSS 代码, 我们称之为 Tree-Shaking 例如: 在 a.js 中引入了 b 模块, b 模块中有 2 个方法, 但是我只用到了 1 个方法 默认情况下会将 b 模块中所有代码都打包到 a.js 中 为了提升网页性能降低打包体积, 我们可以只将用到的方法打包到 a.js

开启 Tree-Shaking

官方文档:https://www.webpackjs.com/guides/tree-shaking 在这里就不在写多余的废物案例了,就直接介绍一下开启环境和生产环境的使用即可,如果是在开发环境当中的话需要修改开发环境的 webpack.config.js, 也就是修改 webpack.config.dev.js, 告诉 webpack 只打包导入模块中用到的内容:

image-20211208095919260
image-20211208095919260
代码语言:javascript
复制
optimization: {
    usedExports: true
},

本文主要介绍的是 JS 的 Tree-Shaking 所以博主这里就先排除掉 CSS 相关的过滤,修改 package.json 配置, 告诉 webpack 哪些文件不做 Tree-Shaking

image-20211208100130389
image-20211208100130389
代码语言:json
复制
"sideEffects": [
  "*.css",
  "*.less",
  "*.scss"
],

然后在进行测试一下,新建一个 custom.js:

代码语言:javascript
复制
function add(a, b) {
    return a + b;
}

function minus(a, b) {
    return a - b;
}

export {add, minus};

然后在 index.js 当中进行使用:

代码语言:javascript
复制
import {add} from './custom.js';
import '../css/index.css';

const res = add(10, 5);
console.log(res);

然后通过 npm run dev 进行打包,查看打包之后的 js 文件发现,没有使用到的方法在开发环境当中的体现就是以注释的方式进行体现的,注释的含义为告诉你只使用到了 add:

image-20211208103307376
image-20211208103307376
image-20211208113610515
image-20211208113610515

如上就是开发环境的 Tree-Shaking 相关配置和使用,接下来就是生产环境的 Tree-Shaking 相关使用,其实在生产环境模式中,是无需进行任何配置的, webpack 默认已经实现了 Tree-Shaking 直接利用 npm run prod 打包即可:

image-20211208113953479
image-20211208113953479

注意点

  • 只有 ES module 导入才支持 Tree-Shaking
  • 任何导入的文件都会受到 Tree-Shaking 的影响

这意味着,如果在项目中使用类似 css-loader 并导入 CSS 文件,则需要将其添加到 sideEffects 列表中,以免在生产模式中无意中将它删除。

我正在参与2023腾讯技术创作特训营第二期有奖征文,瓜分万元奖池和键盘手表

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Tree-Shaking 概述
  • 开启 Tree-Shaking
  • 注意点
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档