在 package.json 中相同依赖项的 2 个版本之间切换的好方法?

Posted

技术标签:

【中文标题】在 package.json 中相同依赖项的 2 个版本之间切换的好方法?【英文标题】:Good way to switch between 2 versions of the same dependency in package.json? 【发布时间】:2021-08-31 17:22:03 【问题描述】:

事实证明你不能在 JSON 文件中包含 cmets,让人们参考一些文档告诉他们要复制/粘贴哪一行以及在哪里实现这一点有点尴尬。

我想我可以制作一个 python 脚本来复制/粘贴两个 package.json 文件之一,具体取决于它们传入的标志,但这感觉过于复杂。

我认为我可以包含两个依赖项(使用不同的名称),但这会要求两者都可用,这也不好。

寻找实现这一目标的好方法的想法/想法。我有相同依赖项的发布和开发版本,我经常需要在两者之间交换。想要改进工作流程,而不仅仅是在侧面粘贴两行的记事本......

【问题讨论】:

您可以使用不同的 package.json 文件创建两个 git 分支。 git checkout branch-name-package1 package.json 【参考方案1】:

yarnnpm 已经完成了这项工作,为什么不使用它们呢?

发布

Tag 发布时的开发版本

yarn publish --tag dev dep
npm publish --tag dev dep

然后在安装时引用标签yarn install dep@dev

本地

对于本地依赖,npmyarn 提供“链接”命令。

在你的依赖目录中运行yarn link 在你的项目目录中运行yarn link dep

您可以将命令记录为易于运行或查看的脚本。

"scripts" : 
  "dep:local": "yarn link dep",
  "dep:dev": "yarn install dep@dev",
  "dep:latest": "yarn install dep@latest"

【讨论】:

开发版本并不总是发布,我有时也在使用本地相对路径。这在某些情况下会起作用,谢谢你,但是在 "mypkg": "../../sources/mypkg" 和已发布版本之间切换呢? npm/yarn link 会做本地

以上是关于在 package.json 中相同依赖项的 2 个版本之间切换的好方法?的主要内容,如果未能解决你的问题,请参考以下文章

在 package.json 和 package-lock.json 中更新版本号而不更新依赖

npm install:有没有办法忽略 package.json 中的特定依赖项

使用 package-lock.json 更新中间 npm 依赖项

有没有办法为 package.json 中的相同依赖项指定不同的路径?

即使从 package.json 中删除,node-gyp 也会尝试构建依赖项

通过阅读 package.json 升级 React 版本及其依赖项