如何配置Lerna永不发布./integration-test目录下的包?
解决Lerna永不发布
./integration-test目录包的方案 核心思路
Lerna默认会把所有包含package.json的目录识别为可管理的包,要阻止发布./integration-test下的包,需要从排除Lerna对该目录的包管理入手,以下是两种可靠方案:
方案1:限定Lerna的包扫描范围
直接在lerna.json中指定仅扫描./packages目录,让Lerna完全忽略./integration-test:
{ "packages": ["packages/*"], "version": "independent", "npmClient": "yarn", "useWorkspaces": true }
这种方法从根源上切断Lerna对测试目录包的管理,不会触发任何与该包相关的发布逻辑。
方案2:标记测试包为私有
在./integration-test/package.json中添加"private": true字段,Lerna会自动跳过所有标记为私有包的发布流程:
{ "name": "@foo/test.bar", "private": true, // 其他原有字段... }
即使该包依赖的./packages下的包发生变更,Lerna也不会将其纳入发布列表。
为什么之前的配置无效?
ignoreChanges仅忽略目标目录的代码变更,但如果该包被Lerna管理,当它依赖的包变更时,仍会触发发布(符合文档中“关联依赖变更强制发布”的规则)。ignore/scope的正则匹配可能因写法或Lerna的匹配逻辑问题未生效,不如上述两种方案直接可靠。
内容的提问来源于stack exchange,提问作者Ivan Rubinson
相关产品推荐
相关产品推荐

