一次只改了两个包,changeset version 之后 pnpm publish -r 把仓库里七个包全发了一遍,其中五个只是版本号加一,registry 上多了五条无内容更新。第一次遇到会往复杂处想,其实漏掉的多是个小前提。

npx changeset status --since=origin/main
pnpm changeset version
pnpm --filter @acme/ui publish --no-git-checks

changeset 文件是按包记录 bump 的,合并分支时把别人没消费的 changeset 一起带进来,version 阶段就会给那些包升版本。发布命令再用 -r 递归,所有版本有变化的包都会被推上去。这一点先确认清楚,后面就不用反复试。

「changesets 多发包」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。

改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。

具体做法是,发布前用 changeset status 看这次会动哪些包;把无关的 changeset 文件从本次分支移除 不要顺手合并;publish 只针对确定要发的包 用 --filter 限定范围;发布后在 registry 上核对本次新增的版本列表。

改完照着核一遍,changeset status 列出的包和实际发布数量一致 没有只升版本的空发布。

作者 9823189