如何在不安装的情况下修改 package.json 依赖项

Posted

技术标签:

【中文标题】如何在不安装的情况下修改 package.json 依赖项【英文标题】:How to modify package.json dependencies without installation 【发布时间】:2021-09-21 11:56:57 【问题描述】:

我有一个生成一些包的自动脚本,其中一个包使用其他生成的包作为依赖项。因此,例如,如果我有包 A、B 和 C,C 的 package.json 将如下所示:


  "name": "C",
  "version": "0.0.1",
  "dependencies": 
    "A": "0.0.1",
    "B": "0.0.1"
  

我想这样做,以便每当我构建包时(我总是构建所有包并更改它们的版本)C 的 package.json 会自动更新,但无需任何安装或检查包是否存在于注册表中(它们是没有立即发布,我无法改变它,所以它们可能还不存在)。 在这种情况下,如果我将包更新到 0.0.2 版本,那么 C 的 package.json 需要变为:


  "name": "C",
  "version": "0.0.2",
  "dependencies": 
    "A": "0.0.2",
    "B": "0.0.2"
  

我已经知道如何更改一个包自己的版本,我不知道如何更新它的依赖关系。 另一件值得一提的是,我有时可能需要使用其他版本,所以它并不总是升级(例如,最新版本目前是 0.2.0,但我需要构建 0.1.5,所以我不能只使用一些东西这会将依赖项更新到最新版本)

我尝试在互联网上查找,我发现了一些东西(例如这个问题:NPM - Add to package.json but don't install)但他们仍然检查包是否存在然后给我错误。

【问题讨论】:

【参考方案1】:

最后我意识到我不需要一个“更新”依赖项的工具,而是一个编辑 package.json 的工具,所以我结束了使用这个库 https://github.com/zeke/npe

在我的 bash 脚本中,我创建了一个数组,其中包含我需要更改的依赖项,然后我遍历它

for i in $projects[@]
do
    npe dependencies.$i $version
done

【讨论】:

以上是关于如何在不安装的情况下修改 package.json 依赖项的主要内容,如果未能解决你的问题,请参考以下文章

NPM - 如何在不更新或添加 package.json 中描述的包的情况下安装新包

有没有办法在不安装包的情况下按字母顺序排列 package.json?

如何在不使用 create-react-app 且仅使用我自己的 Webpack 的情况下设置 package.json 进行部署?

有没有办法在不提交版本的情况下“修改版本”?

如何在不再次运行配置脚本/cmake 的情况下修改安装路径

如何在忽略 semver 的情况下安装 NPM 包?