findxc / blog

88 stars 5 forks source link

npm publish 相关的两个工具 #75

Open findxc opened 2 years ago

findxc commented 2 years ago

Verdaccio

A lightweight Node.js private proxy registry | Verdaccio

Verdaccio 是用来搭建私有 npm 仓库的,使用很简单。由于使用真的很简单,所以当你希望能有个环境来学习和测试 npm publish 时,你可以本地启动一个 Verdaccio 服务,然后把你的包发到这上面,体验一下和真实发包一样的流程。

具体使用步骤如下:

  1. npm install --global verdaccio 安装
  2. 执行 verdaccio 来启动服务
  3. 执行 npm adduser --registry http://localhost:4873/ 来初始化一个用户,随意填即可,执行完后默认就是登录状态了
  4. 然后 npm publish --registry http://localhost:4873 就可以发包到本地的 npm 服务上了

补充说明:

  1. 可以通过 nrm 来添加 http://localhost:4873 作为一个仓库地址,方便切换
  2. Verdaccio 的相关配置在 ~/.config/verdaccio 下,比如 htpasswd 文件是账号信息,如果你忘记初始用户密码了,可以删了这个文件重新再来一次
  3. 如果是用来给团队搭建私有 npm 仓库服务,用 Docker 的方式来运行比较好,方便后续升级

release-it

GitHub - release-it/release-it: 🚀 Automate versioning and package publishing

当一个包要发新版本时,需要修改 package.json 中的 version ,然后 commit 对 package.json 的修改,然后打 tag ,然后 push 到远端,然后你可能还会在 GitHub 上创建一次 release 。

release-it 是一个可以帮你自动做这些事情的工具。在项目根目录下执行 npm init release-it 来安装,然后在 package.json 的 scripts 增加如下命令 。

"scripts": {
  "release": "release-it",
  "release:pre": "release-it --preRelease=beta"
},

当你希望发 beta 版本时,就 npm run release:pre ,发正式版本就 npm run release

补充,如果希望自动在 GitHub 上创建一次 release ,需要额外配置,详见 GitHub Releases

怎么判断我的版本是 patch , minor 还是 major

About semantic versioning | npm Docs 这里有解释。

那 pre-release 时版本号的 alpha , beta 和 rc 又是啥

软件版本周期 - 维基百科,自由的百科全书 这里有解释。

如果很完整的流程,一个包可能会先不断发 alpha 版本,相对稳定后发 beta 版本,然后再稳定后发 rc 版本,最后发正式版本。

比如 react 的部分 tags 如下图所示。

关于 npm version 这个命令

其实 npm 有提供 npm version 这个命令来更新版本号,比如执行 npm version patch 后,会修改 package.json ,并 commit ,并打 tag 。然后也有相关的生命周期钩子,在 Description 有解释执行时机。只是说用 release-it 来发包会更加方便。

"scripts": {
  "preversion": "npm test",
  "version": "npm run build && git add -A dist",
  "postversion": "git push && git push --tags && rm -rf build/temp"
}