Closed SoloJiang closed 3 years ago
https://g.alicdn.com/code/lib/rax/${version}/rax.js
的人造成影响,但我理解可以接受?单文件的话全部放在 dist 目录下是不是更好?
「或者直接把抽离的 API 再合入 rax core(会导致 core 体积变大)」大多少,之前有聊过把这块直接放到 core 里,不强行分开了
全部放在 dist 目录下可能存在的问题: compat 文件现在的 alias 是这么做的: alias: rax => rax/lib/compat 可能会有 break
「或者直接把抽离的 API 再合入 rax core(会导致 core 体积变大)」大多少,之前有聊过把这块直接放到 core 里,不强行分开了
gzipped 之后 1kb 左右
最终结论:
背景
目前 rax 核心包会导出多种格式文件,但实际使用到的比较少,同时由于 rollup 版本升级导致原先
dist/rax.js
IIFE 格式的导出形式和之前存在差异,不能直接在 cjs 的模块系统中使用(可在构建结束添加导出代码,以前也是通过添加导出代码 run 起来的)。当下打出的产物如下:
lib 和 es 目录是通过 babel 单文件编译的。
同时 rax core 的入口文件为根目录下 index.js:
同时,
dist/rax.min.js
和lib/index.js
是否是 esmodule 导出的标识也是不一样的(前者没有),这会导致某些构建场景下存在不一致性,导致报错。React 是怎么做的
目前 React 没有多文件导出形式,全部都是编译成单文件,同时提供两种格式的产物,分别是 cjs 和 umd,发到 cdn 上的版本是 umd,通过 npm 引用的形式是 cjs:https://unpkg.com/browse/react@17.0.2/
入口文件为:
即统一使用 cjs 的形式。
后续变更方案(待讨论)
index.js 中导出 cjs 产物:
cdnjs 上同时上传
lib/es/dist
目录(需要给 cdnjs/packages 提 PR)