准备工作

全局安装pnpm

$ npm i pnpm -g

安装changesets

$ pnpm i @changesets/cli -Dw

初始化

  • 创建项目
$ mkdir my-project
$ mkdir my-project/packages
$ pnpm init
  • 指定packages范围

创建pnpm-workspace.yaml,并添加如下内容

packages:
  - "packages/*"
  • 添加package

packages目录下新建项目(如:pkg1、pkg2)

package没有特别的规则,遵循 npm标准就行
  • 初始化changeset
pnpm changeset init

执行命令后会在根目录生成.changeset/conifg.json文件,里面是changeset的相关配置

{
  "$schema": "https://unpkg.com/@changesets/[email protected]/schema.json",
  "changelog": "@changesets/cli/changelog", //更新日志生成函数的加载地址
  "commit": true, //自动提交version的改动
  "fixed": [], //捆绑发布的包
  "linked": [],//设定版本保持一致的包
  "access": "public", //公开,如果你想阻止一个包被发布到npm,在包的package.json中设置private: true (可选值:restricted,不公开)
  "baseBranch": "master", //主分支名
  "updateInternalDependencies": "patch", //是否主动更新package的依赖,patch、minor
  "ignore": []  //指定不发布的包
}

添加依赖

添加三方依赖

$ pnpm i axios -C packages/packageA #包路径为packages/packageA的包添加axios
$ pnpm i axios --filter packageName #给包名(package.json中那name字段)为packageName的包添加axios依赖
$ pnpm i axios -w #将axios安装到根目录

如果是本地的包相互依赖,可以使用workspace协议安装,例如包pkg1依赖本地的pkg2

pnpm i pkg2@workspace --filter pkg1

版本管理

当修改了某个或者几个包,需要在发布之前通过changesets更新版本号:

$ pnpm changeset add #选择需要修改版本的包
如果想更换版本号升级类型: majorminorpatch,在第一次选择完包名之后(如下图)按回车健而不是空格键

image.png

根据提示选择,之后会在.changeset目录下生成修改日志文件

---
"@super-poster/pkg1": major
"@super-poster/pkg2": major
---
修改日志信息

该文件描述了执行changeset version之后将被更改的包以及版本号升级了类型和修改的提交message

我们也可以修改这个文件,达到我们的需求,例如讲major修改更patch,那么将更新第三位版本号(如:v0.0.1 -> v0.0.2),一般操作无误的情况下,我们是无需修改这个更新文件的

选择完要修改版本的包之后,将修改提交到git,然后执行changese version命令更新版本

pnpm changeset version

执行完上面的命令之后,选择的包的版本号将会被更新,确认无误之后发布到npm

pnpm publish -r
最后修改:2023 年 05 月 22 日
如果觉得我的文章对你有用,请随意赞赏