demo 地址 https://stackblitz.com/edit/vitejs-vite-cvb6u1?file=src/App.ts
同样引入三个东西,第一种压缩前 44k ,第二种 17k ,第三种 9k
像这种兼容 commonjs 和 esm 的库,想要实现最优化打包大小每次 import 的时候是不是都要保证是从 es 目录下面单独引入的?
有没有插件可以实现把支持 esm 的库的引入都自动转成 es 目录下的引入?
import { List, NonEmptyList, Maybe } from 'purify-ts';
// import { Maybe } from 'purify-ts/Maybe';
// import { NonEmptyList } from 'purify-ts/NonEmptyList';
// import { List } from 'purify-ts/List';
// import { Maybe } from 'purify-ts/es/Maybe';
// import { NonEmptyList } from 'purify-ts/es/NonEmptyList';
// import { List } from 'purify-ts/es/List';
const columns = [
{ id: 1, itemIds: [1, 2] },
{ id: 2, itemIds: [3] },
];
function App() {
Maybe.of(1).chain((value) => Maybe.fromNullable(value).ifJust(console.log));
NonEmptyList.fromArray([1, 2, 3]).map(NonEmptyList.head).ifJust(console.log);
List.find(({ id }) => id === 1, columns).ifJust(console.log);
return 'hello';
}
const a = document.createElement('div');
a.innerText = App();
document.querySelector('#root')?.appendChild(a);
1
noe132 2022-03-24 21:54:37 +08:00
这是你用的库对 esmodule treeshaking 支持不好。建议提个 issue
|
2
gouflv 2022-03-24 22:15:12 +08:00 via iPhone
没记错的话,模块的 package.json 需要写 module 字段导出 esm 包的主文件
|
3
Leviathann 2022-03-25 00:40:46 +08:00
|
4
mxT52CRuqR6o5 2022-03-25 10:41:43 +08:00 via Android
有 babel 插件可以做这种事
|
5
mxT52CRuqR6o5 2022-03-25 10:43:17 +08:00 via Android
babel-plugin-import
|
6
Charrlles 2022-03-25 11:04:47 +08:00 via iPhone 1
vite-plugin-imp 这个可以自定义引入的规则
|
7
TWorldIsNButThis OP @Charrlles 感谢 今天试了下的确解决了
|