464 - 《2024 年如何发布 npm 包(2)》

发布于 2024年8月25日

21 年写过一篇 20 - 《npm 包的工程化》,有些内容已经变化了,结合最近看到的文章和理解,做下更新和补充。

1、npm 包有太多选择,看需求。如果只要 esm 或 cjs 一种格式,选 tsc 就够。如果要输出多种格式,比如 esm 和 cjs 都要,那可以选 tsup 或者 father 或者其他的。如果还要 umd,father 应该是开箱即用的选择,他是从蚂蚁的需求里打磨出来的。

如果是大型项目,构建还要注意 watch mode 的性能。尤其是 monorepo 的,package 多了,构建一次还是很慢的。这个时候,最近给 father 加的这个 --incremental 的特性就很有用了,因为项目文件通常上次都已经 build 过,dev 启动时只要 watch 就行了,无需额外对现有文件做一次完整 build。

2、关于格式选择。之前 sindresorhus 推 esm 其实给社区带来不少坑,虽说现在 Node 可以通过 --experimental-require-module 支持 esm 模块的 require,但始终还未转正。所以,个人觉得,如果要支持在 Node 下使用,带上 cjs 格式的产物还是需要的。

3、LICENSE 可以用 Choose a License 选适合你的,如果没啥特别,就和我一样,用 MIT 吧。

4、代码格式化首选 prettier(记得加 @trivago/prettier-plugin-sort-imports 插件做 import 和 specifier 排序),然后加两个 script,format 和 check,前者用于本地格式化,后者用于 CI 校验。如果项目巨大,像 antd 一样,你可能会在乎性能,这是可选 biome。

5、npm 包有很多坑的,所以如果能在发布前做一些健康检查,会比较好。这部分

内容预览已结束

此内容需要会员权限。请先登录以查看完整内容。