以下是问题的描述:-
预期的行为是为 packages 文件夹中的每个包生成一个 package-lock.json 文件。
当前行为 我当前的项目结构如下:-
packages/internal-package-1/package.json
packages/internal-package-2/package.json
packages/internal-package-3/package.json
lerna.json
package.json
package-lock.json
现在如上所示,只有一个 package-lock.json 文件是为 . 整个项目,它只包含顶部 package.json 文件中的依赖项。
我的期望是每个 package.json 文件都应该生成相应的 package-lock.json ,但事实并非如此。此外,顶层 package-lock.json 文件只包含顶层 package.json 中的依赖项,而不包含在每个 package.json 文件中声明的所有依赖项。
现在,如果我们尝试在另一个项目中使用例如 internal-package-1 ,因为该包没有锁定文件,所以会下载最新版本的依赖项,这不是预期的行为。
可能的解决方案 可能的解决方案或期望是为每个包生成一个锁定文件。
lerna.json
{
"packages": [
"packages/*",
"packages/Foundation/src/SampleNestedModule"
],
"version": "0.0.0"
}
这个问题影响了我们,因为锁定文件不是为每个包生成的,如果我尝试在不同的项目中使用 internal-package-1,那么锁定的依赖项不会被下载,但它们的最新版本会被下载。
我们正在提升依赖项,因此我们修改了我们的 npm install 脚本如下:-
"install": "lerna bootstrap --hoist"
,这正确地提升了依赖项,但不会为单个包生成锁定文件。
可执行版本
lerna --version 3.17.0
npm --version 6.10.1
yarn --version Not using yarn
node --version 10.16.0
| OS | Version |
MACOS
| NAME | VERSION |
| macOS Catalina | 10.15.2 |
以下是我已经研究过的一些关于相同的帖子 -
谢谢,维谢什。