首页 > 解决方案 > 以分支安装 NPM 包为目标时,如何定位 (Lerna) monorepo 的子目录?

问题描述

有时,将 git 分支作为目标是很有用的(如Depend on a branch or tag using a git URL in a package.json?),例如:

"dependencies": {
  "@my-company-internal-scope/some-package": "git+ssh://git@git.mycompany.internal.example.com:some-package.git#some-branch"
}

(值得注意的是,这是一个本地 git 解决方案,而不是例如 github.com 或 gitlab.com - 但我看不出这会如何影响我想在这里做的事情。我只是指出它是因为我无法指导你到目标仓库,我只能描述一下,如下……)

我们已经切换到使用Lerna,并且我们在 monorepo 中有一些模块。

基本上,我们在这个存储库中的根级 package.json 不是根级 package.json 和模块导出,而是如下所示:

{
"name": "irrelevantAndIWillAlsoBeOmittingOtherSuperfluousDetails",
// ...
"devDependencies": {
  "lerna": "^3.16.4"
},
"dependencies": {
  "some-module": "file:./packages/some-module",
  "some-other-module": "file:./packages/some-other-module"
},
}

在 中,它是没有概念packages/some-module的模块导出(它有自己的) ,但值得注意的是其中的字段是指monorepo:package.jsonlernarepositorypackage.json

  "publishConfig": {
    "registry": "https://artifacts.tools.my-company.example.com/registry"
  },  
  "repository": {
    "type": "git",
    "url": "git@my-company.example.com:department/component-monorepo.git"
  }, 

我想要做的是some-package在 monorepo 中定位#nonstandard-branch。我怎样才能做到这一点?

(只是呼吁,因为依赖这些进行安装可能不是最佳实践:这不是永久性的,这是一个临时的工作流程。假设我们必须部署需要模块级修复的东西和拥有工件的团队发布系统都放假了。这些细节应该和你无关,我只是不想以“是的,只要发布版本,如果你担心就让它成为预发布”作为答案。)

标签: gitnpminstallationmonorepolerna

解决方案


推荐阅读