之前团队内部有一个老的组件库项目,打包成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';
......
......
再来看看引入该组件库的项目打包结果前后对比
优化前
优化后