【发布时间】:2022-08-08 18:56:46
【问题描述】:
我正在使用 npm 工作区来管理 monorepo。我注意到顶级package-lock.json 在其\"package\" 字段中包含每个工作区package.json 的缓存副本。如何在不更新package-lock.json 中的所有依赖版本的情况下刷新这些缓存副本?
到目前为止,我发现的最佳方法是:
- 删除顶级
package-lock.json。 - 运行
npm i。
这可行,但也会更新package-lock.json 中的所有依赖项版本。我宁愿避免这种情况,以防更新依赖项破坏某些东西,因为这会为package-lock.json 创建巨大的 git 差异。
非解决方案
运行 npm update <workspace package name> 不起作用,至少如果我更改了工作区的包版本号 (No matching version found for <package name>@<new version>)。
如果我按照建议的here 尝试npm i --package-lock-only,同样的问题。
动机
package-lock.json 已检查到我的 git monorepo 中,所以我认为每次碰撞工作区包的版本时都需要像这样更新它。
我过去也遇到过一个问题,我更新了工作区的package.json 中的bin 字段,但npm ci 继续使用旧版本。这已通过刷新 package-lock.json 修复,但再次以更新所有依赖版本为代价。
标签: npm monorepo package-lock.json