新一代 NPM 包研发工具 father 4 发布

1,191 阅读3分钟

大概两个月前,我们发布了 father 4 的 RC 版本,在 RC 阶段我们收到了不少尝鲜用户的建议,也持续对 father 4 做了不少优化;今天,终于可以满怀喜悦地和大家分享 father 4 的第一个正式版本了!

作为一款全新的 NPM 包研发工具,father 4 的具备如下核心特性:

  • ⚔️ 双模式构建: 支持 Bundless 及 Bundle 两种构建模式,ESModule 及 CommonJS 产物使用 Bundless 模式,UMD 产物使用 Bundle 模式
  • 🎛 多构建核心: Bundle 模式使用 Webpack 作为构建核心,Bundless 模式使用 esbuild 及 Babel 两种构建核心,可通过配置自由切换
  • 🔖 类型生成: 无论是源码构建还是依赖预打包,都支持为 TypeScript 模块生成 .d.ts 类型定义
  • 🩺 项目体检: 对 NPM 包研发常见误区做检查,让每一次发布都更加稳健
  • 🏗 微生成器: 为项目追加生成常见的工程化能力,例如使用 jest 编写测试
  • 📦 依赖预打包: 开箱即用的依赖预打包能力,帮助 Node.js 框架/库提升稳定性、不受上游依赖更新影响(实验性)

除了 RC 发布时 为大家隆重介绍的双模式构建多 Bundless 构建核心依赖预打包之外,正式版还带来了项目体检及微生成器两大新特性。

项目体检

为了帮助大家避免 NPM 包研发中的常见误区、确保项目的稳定可用,father 4 提供了 father doctor 这条项目体检命令,目前包含 7 条规则,比如是否使用了幽灵依赖、sideEffects 是否配置有误、是否忘记把文件添加到 files 字段等。

father doctor 已包含在默认脚手架的 prepublishOnly 脚本配置中,为我们的每一次发布保驾护航。执行效果如下:

father4_pic_1.png

如果你还有更多的研发建议或遇到过其他误区,欢迎 一起讨论、作为未来 father doctor 的校验规则之一。

微生成器

不同于 father 2 内置了诸如 precommittest 等工程化能力,为了保持更好的灵活性、且避免因为 father 自身的迭代频次与社区上游生态脱节,father 4 不再内置这些工程化能力,而是和 Umi 4 类似、为大家提供更加自由的微生成器能力——father g <name> 命令。

例如,项目前期没有测试用例,但后期需要使用 Jest 来测试项目源代码,只需要简单地执行 father g jest,father 将会为我们自动生成运行 Jest 需要的依赖、配置:

father4_pic_2.png

后续 father 还将提供 commitlintlint等微生成器模板。

上手及迁移

如果你刚刚听说 father,又正好需要一款 NPM 包研发工具,可参考 GitHub 仓库的 快速上手指南 初始化一个新项目。

如果你是 father 的老用户,想把旧项目升级,可参考 GitHub 仓库的 迁移指南

后续规划

正式版发布只是一个新的开始,后续我们还计划迭代如下功能:

  1. 插件接入能力,给项目提供定制化的入口,并发展插件生态
  2. 与 dumi 2.0 集成、为 UI 组件库开发者提供更加一体化的方案
  3. Node.js 项目 Pure ESM 支持
  4. 更新日志生成
  5. ……

如果你也对 NPM 研发方案有兴趣或有经验,欢迎 参与到 father 4 的建设中,一起将它变得更好 ❤️