6

我们有一个现有的Lerna mono-repo,其结构如下:

/
  /packages
    /package1
    /package2
    /package3
    ...

我们目前在项目中使用 Yarn,实际上只有一个顶级yarn.lock文件,没有每个包yarn.lock,因为我们从未使用过 Workspaces。

我们正在尝试切换到 npm,并希望package-lock.json为 mono-repo 中的每个包生成一个文件,而不仅仅是顶层。我们应该怎么做?运行npm run lerna bootstrap --hoist会创建一个顶级锁定文件,但不包含任何"dev": true标签,也不包含任何本地包。我能做的最好的事情是做npm run lerna add somePackage --scope=package1,即使somePackage已经存在于 中package,也会导致为 mono repo 中的每个包生成一个package-lock.json文件,除了package1. 此外,生成的package-lock.json文件没有任何开发依赖项。

此外,我无法进入每个包并运行npm install,因为npm不了解我们在 mono-repo 中其他本地包所依赖的许多本地包。奇怪的是,即使在package-lock.jsonnpm 通过 生成的文件中lerna add,这些文件也不包含对本地包的任何引用,只包含对外部包的引用。

那么:如何为package-lock.jsonmono-repo 中还包含 devDependencies 的每个包生成一个文件?

4

0 回答 0