Skip to content

Instantly share code, notes, and snippets.

@condorheroblog
Created March 30, 2022 03:47
Show Gist options
  • Save condorheroblog/2fe314885e982843e975f1cec2a8ba7c to your computer and use it in GitHub Desktop.
Save condorheroblog/2fe314885e982843e975f1cec2a8ba7c to your computer and use it in GitHub Desktop.
更新版本需要做的事情

发布版本需要完成哪些事

  1. 更新 package.json(package-lock.json)
  2. 根据 commit 纪录,生成 CHANGELOG.md
  3. commit 提交 package.json(package-lock.json)CHANGELOG.md 文件。
  4. git tag 打标签。
  5. Pushes 到 git remote 例如:git push --follow-tags origin master
  6. Publish 到 npm。

上面的过程如果全部手动的话:

  1. npm version;
  2. 需要配置一大堆的东西才能生成;
  3. 手动 git commit 提交本地更新;
  4. 手动 git tag 打上 tag
  5. 手动 push 到远程库
  6. 手动发布到 npm

上面的动作可简化为:

  1. version
  2. CHANGELOG
  3. commit
  4. tag
  5. push
  6. publish

这六个动作基本上完全都应该自动化。

unscope package

最简单的就是 standard-version

scope package

一般结合 monorepo 使用,这时候在更新 package 的时候就不能局限在 root 目录了,就必须要递归更新。

standard-version 当然也可以使用,但是需要配置 .versionrc 文件指定,例如:

{
  "bumpFiles": [
    {
      "filename": "packages/basic/package.json",
      "type": "json"
    },
    {
      "filename": "packages/all/package.json",
      "type": "json"
    },
    {
      "filename": "packages/vue/package.json",
      "type": "json"
    },
    {
      "filename": "packages/react/package.json",
      "type": "json"
    },
    {
      "filename": "package.json",
      "type": "json"
    }
  ]
}

monorepo 有更好的解决方案。

lerna

一句命令就解决了:

lerna publish --conventional-commits

上面的命令是个复合命令,真实的执行情况是这样的:lerna version --conventional-commits && lerna publish

lerna versionlerna publish 的使用。

pnpm

pnpm 现在应该是最流行的了,递归发布可以通过 pnpm -r publish 实现,难得就是没有支持 version、CHANGELOG、commit、tag、push 步骤,需要 bumpp 来实现:

"release": "bumpp package.json packages/*/package.json --commit --push --tag && pnpm -r publish --access public",
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment