标签: lerna

允许本地项目依赖于本地lerna包

我有一个正在开发的项目的lerna回购.它有几个相互依赖的包.为了简化开发,没有发布任何软件包,它们依赖于彼此的最新版本.

目录树

foo/
  packages/
    core/
      package.json
    errors/
      package.json
Run Code Online (Sandbox Code Playgroud)

富/包/核心/的package.json

{
  ...
  dependencies: {
    "@foo/errors": "*"
  }
}
Run Code Online (Sandbox Code Playgroud)

我有另一个项目,bar我正在用来测试lerna项目.目前我正在使用本地file:依赖关系链接到它的依赖项:

酒吧/的package.json

{
  ...
  dependencies: {
    "@foo/core": "../foo/packages/core"
  }
}
Run Code Online (Sandbox Code Playgroud)

这种方法给了我一个麻烦的世界.

  • 使用npm,我经常遇到ENOENT .DELETE错误.删除我的package-lock.json并重新安装已经花费了数年时间.
  • 使用纱,我已经无法yarn installbar.Yarn遵循file:依赖关系@foo/core,看到它依赖于@foo/errors并且不了解lerna的符号链接.这导致它失败,告诉我它找不到@foo/errors.

这使得为​​这个项目编写实际代码是次要的依赖管理.

我怎样才能做到这一点(我感觉相当简单?)项目结构工作?此时打开到lerna/yarn/npm/pnpm/shell脚本/ MS DOS.

npm lerna yarnpkg

24
推荐指数
3
解决办法
4973
查看次数

如何在不发布的情况下在 lerna monorepo 中构建 docker 镜像

这个用例是在 Lerna monorepos 中的分支构建和部署。

问题是 Lerna monorepos 要么提升 NPM 中的依赖项,要么使用 yarn 工作区达到相同的效果来收集工作区/monorepo 的 node_modules 文件夹中的所有依赖项。这意味着由于 docker 构建上下文的工作方式,在子文件夹中构建 Dockerfile 时将无法访问它们。

我想这里需要的是一种“较低”(与提升相反)的函数,用于在运行 docker build 之前将包依赖项拉到 Docker/package.json 项目的 node_modules 中。

问题是,有没有人有更好的主意,或者知道已经存在的方法来做到这一点?

javascript npm docker lerna

23
推荐指数
2
解决办法
6663
查看次数

有没有办法用Lerna"刷新"导入的存储库?

我参与了一个包含两个独立存储库的项目,我们很快将它们组合成一个单独的存储库.Lerna的import指挥在这方面会非常有帮助,所以我们将保留项目的历史.

但是,目前在原始存储库中存在一些正在进行的功能分支,当我们转移到monorepo时可能不会准备好.这是我的理解,lerna import只会从源代码库中提取当前已检出的分支 - 这是正确的吗?

所以我想知道是否有办法再次进行导入,但只提取自上次导入后提交的提交?

这样,在功能分支上工作的团队develop一旦准备好就可以合并到分支机构,我们可以将其转移到monorepo中.

或者,是否存在处理此方案的策略?

或者我将不得不等到一切都合并到develop之前lerna import

谢谢!

javascript git lerna

22
推荐指数
1
解决办法
400
查看次数

NPM 7.0.0 的工作区是否不再需要 Lerna?

NPM 7.0.0 工作区是否不再需要 Lerna?

我对这个新的 npm 功能并没有真正的经验。

Npm/rfcs写道:

首先也是最重要的是,可以选择将问题集留给用户空间来解决,已经有非常流行的项目 Lerna 提供了其中的一些功能。

还可以选择仅支持此提案的安装(或 Lerna 命名的引导程序)方面,采用功能不太丰富的方法,但仍然可以实现改善管理多个子包的用户体验的基本目标,但是从在这个 RFC 的研究阶段收集的所有反馈来看,这个替代方案对于所涉及的维护者社区来说不太理想。

很高兴每一个答案和解释:)

package node.js npm lerna

20
推荐指数
2
解决办法
5189
查看次数

无法运行lerna的命令

我正在尝试使用npm安装lerna,成功添加了包但是当我运行lerna的任何命令时它出来了.

bash:lerna:找不到命令

节点版本:v8.10.0

Npm版本:3.10.9.

这是我正在尝试的:

$ npm install --global lerna
C:\Users\<user-name>\AppData\Roaming\npm\lerna -> C:\Users\<user-name>\AppData\Roaming\npm\node_modules\lerna\bin\lerna.js
C:\Users\<user-name>\AppData\Roaming\npm
`--lerna@2.11.0

VaibhavPC@Vaibhav MINGW64 ~/Projects/lerna init 
bash: lerna: command not found
Run Code Online (Sandbox Code Playgroud)

windows node.js npm lerna

15
推荐指数
6
解决办法
8987
查看次数

Monorepo 中的对等依赖关系

当 monorepo 中的包具有对等依赖项时,如何在开发过程中使这些依赖项对它们可用?

例如,一个包在/packages/namespace/alpha/可能有一个devDependencystyled-components在它的package.json

可能的选项:

  1. 声明与开发依赖项相同的依赖项(不必要的重复和维护成本)。

  2. 在 monorepo 的路由中安装包package.json(使用yarn link.

我正在将 Lerna 与纱线工作区一起使用。

javascript npm lerna monorepo yarnpkg

15
推荐指数
1
解决办法
4324
查看次数

monorepo 中的“'rootDir' 预计包含所有源文件”

我正在为客户将一个大型的 monorepo 转换为 TypeScript,但是,我自己对 TS 还很陌生,并且遇到了一个错误,我找不到明显的修复方法。

TS6059: File '[path to repo root]/packages/config/globals.ts' is not under 'rootDir' '[path to repo root]/packages/components/src'. 'rootDir' is expected to contain all source files.

globals.ts文件不应该存在于components包中,它属于config包,所以我不太明白这个错误。

我在存储库的根目录中有一个主 tsconfig 文件(https://github.com/serge-web/serge/blob/feature/333-game-admin-channel/tsconfig.json),然后每个包都有自己的tsconfig 文件扩展了该文件。该components包的位置在这里: https: //github.com/serge-web/serge/blob/feature/333-game-admin-channel/packages/components/tsconfig.json

我假设我错误地扩展了包中的 tsconfig 文件,或者我references错误地使用了它,但我找不到正确的方法来执行此操作。

如果您需要查看结构,这里是存储库的链接:https://github.com/serge-web/serge/tree/feature/333-game-admin-channel

typescript lerna monorepo yarnpkg yarn-workspaces

14
推荐指数
1
解决办法
2万
查看次数

使用Lerna与未发布的包

我正在尝试用Lerna建立我的monorepo.计划是通过拉出应该是他们自己的包的代码块来重构现有项目.我跑了lerna init,我目前的设置如下:

project/
  packages/
    new-refactored-package/
      package.json
    prior-existing-project/
      package.json
        { "dependencies" : { "new-refactored-package" : "latest" } }
  package.json
    {
      "devDependencies": {
        "lerna": "^2.0.0-rc.5"
      }
    }
  lerna.json
    {
      "lerna": "2.0.0-rc.5",
      "packages": [
        "packages/*"
      ],
      "version": "0.0.0"
    }
Run Code Online (Sandbox Code Playgroud)

我的理解是,lerna bootstrap在这一点上应该定位package1在项目并将其符号链接到prior-existing-project/node_modules/new-refactored-package/.来自lerna的自述文件:

在当前的Lerna仓库中引导包.安装所有依赖项并链接任何交叉依赖项.

运行时,此命令将:

  • npm安装每个包的所有外部依赖项.
  • 将所有相互依赖的Lerna软件包汇集在一起​​.
  • npm预先发布所有自举包.

但是,当我运行它时,lerna会尝试npm install new-refactored-package:

错误的ERR!404注册表在https://registry.npmjs.org/new-refactored-package上为GET返回404

我误会了吗?我首先必须发布依赖的包npm吗?

lerna

13
推荐指数
2
解决办法
3759
查看次数

Lerna、yarn 和 Typescript:找不到模块或其相应的类型声明

我有一个 lerna + 纱线工作区 monorepo,具有独立的版本控制。我在导入同级包时遇到问题。

我有两个包,其中一个应该依赖于另一个,如下所示:

(root)
  |--packages
       |--money
       |--money-standard-units
            |--{deps. on money}
Run Code Online (Sandbox Code Playgroud)

在 的内部money-standard-deps,我尝试导入 的导出成员,money但无法这样做;我收到以下消息:

TS2307:找不到模块“money”或其相应的类型声明。

我知道这个问题可以通过添加money到tsconfigpaths的数组中来解决,但我想依赖于构建的包,因为它们将单独发布。我希望它能够有效地工作,就好像它是两个单独的存储库一样。money-standard-libs

我创建了一个演示存储库

typescript lerna yarnpkg yarn-workspaces

13
推荐指数
1
解决办法
2万
查看次数

通过git URL从lerna管理的monorepo安装包

我正在为我的项目使用纱线.我的项目有依赖性,恰好是由lerna维护的更大的monorepo的子包.子包已更新但尚未发布,我需要未发布的代码.有没有办法通过git url安装lerna的子包?

谢谢.

javascript npm lerna monorepo yarnpkg

12
推荐指数
1
解决办法
498
查看次数