Lerna 发布时怎么排除某些包不发布?
我用 Lerna 管理一个 monorepo,里面有十几个包,但其中两个是内部工具,不想发布到 npm。试过在 lerna.json 里加 ignore,但好像没生效,publish 的时候还是列出来了。
我的 CSS 文件里有段样式是这样的:
.internal-tool-badge {
display: none;
background: #ccc;
padding: 2px 6px;
border-radius: 4px;
font-size: 12px;
}
其实这些内部包连 version 都不该更新,有没有办法让 Lerna 完全跳过它们?
ignore配置其实主要是给lerna changed和lerna diff用的,publish 根本不吃这套。最简单直接的办法是在你那些内部工具包的 package.json 里加上
"private": true,Lerna 在执行 version 和 publish 时会自动跳过标记为 private 的包,根本不会去更新版本号,也不会尝试发布。比如你某个内部工具的 package.json 改成这样:
加上这一行就完事了,不用改 lerna.json。
如果你不想改 package.json,或者临时想跳过某些包,也可以用命令行参数:
lerna publish --ignore @your-scope/internal-tool-1 --ignore @your-scope/internal-tool-2不过说实话每次敲这么长太烦了,还是直接在 package.json 里设 private 省心,一劳永逸。这样 CI/CD 脚本也干净,不用担心哪天手滑把内部包发到 npm 上去了。