- 本文参加了由公众号@若川视野 发起的每周源码共读活动, 点击了解详情一起参与。
- 第39期 | 如何发布一个 npm 库,自动化管理版本号、生成 changelog、tag 等
背景
开发一个工具库并把它发布到npm平台,目的当然是方便自己和他人方便的使用、PR优化(更好的使用)。
想要别人参与且有较好的体验则需要一定的规范化,个人理解包括以下方面:
- 规范的Commit Message
- 语义化的版本号(结合tag)
- 详细的版本变更内容ChangeLog(基于1.)
- 详细的文档Readme
每次发包的步骤可能是:
功能实现编码 => 提交commit => 打tag => 编辑版本变更内容 => 上传到npm平台 => 代码推送到远程仓库
问题:需要手动操作的步骤较多,繁琐易出错
release-it就是针对npm包开发发布场景的辅助工具,结合其他工具可以在编码完成提交commit后执行,自动完成打标签、生成ChangeLog、上传npm平台等操作。
准备
- GitHub创建仓库、并克隆到本地。(配置好SSH认证,否则无法push到远程仓库)
- 本地终端中登录npm平台账号。(
npm login)
项目初始化&依赖安装
项目初始化
在代码目录内执行一下命令,生成package.json。
npm init
在package.json中,配置命令对应的可执行文件。可执行文件以#!/usr/bin/env node开头。
commit标准化辅助工具安装
安装&配置使用commitizen,对话式提交commit辅助工具。
npm install commitizen
commitizen init cz-conventional-changelog --save-dev --save-exact
安装release-it
npm i -D release-it
项目目录中出现文件名为.release-it.json的配置文件,在此修改发布相关的配置。
在hooks部分,添加后置生成ChangeLog任务的配置(配合安装auto-changelog):
{
...
"hooks": {
"after:bump": "npx auto-changelog -p"
}
}
开发&发布
根据自己的功能需求,编码实现命令行工具。
以我的demo为例,命令pGit工具提供的功能是对一系列Git操作的封装。
pGit branch feature-AAA
实际执行的是:
git stash & git checkout -B feature-AAA
发布
npm run release
在交互界面,选择版本类型(major|minor|patch),是否打tag,是否发布npm包一系列确认。
无报错信息发布完成之后。再在测试目录中安装上传的npm包,运行命令,看是否为预期结果。
总结&收获
-
Npm包开发的好帮手。 release-it这个库能实现多个手动任务的串联执行,降低手动操作出错概率,是我们开发npm包的实用工具。
-
Node.js命令行工作的范例。 库本身有配置文件下载读取等常见功能,也有插件机制、hooks等支持扩展化的功能,学习架构或者要实现类似功能命令行工具,它是很好的参照。