把 npm包改成ES6 module导出后,效果惊人

39 阅读1分钟

之前团队内部有一个老的组件库项目,打包成npm包后,由于没有用ES6 module导出,导致在另一个项目使用时tree shaking失效。(另一个项目技术栈是 NextJS)

因为是组件库,会导出很多个组件,而每个页面只会用到少数几个,这没有 tree shaking 怎么行。

于是简单改了下打包后的产物:

原来是这样:

var Button = require('./Button.js');
exports.Button = Button['default'] || Button;
var Checkbox = require('./Checkbox.js');
exports.Checkbox = Checkbox['default'] || Checkbox;
......
......

修改之后:

export { default as Button } from './Button.js';
export { default as Checkbox } from './Checkbox.js';
......
......

再来看看引入该组件库的项目打包结果前后对比

优化前 image.png

image.png

优化后

image.png

image.png