链接到另一个具有更新版本的本地软件包后,从npm安装软件包

时间:2020-10-31 16:41:45

标签: npm npm-install npm-link

我确定其他人有此工作流程,所以我在这里一定会遗漏一些东西。

如何开发一个新版本的软件包,将其链接到另一个应用程序中进行测试,然后安装另一个(不相关的)软件包?

我所做的:

  1. 运行git clone git@package-to-update && cd package-to-update
  2. 编辑软件包,将package-to-update/package.json的版本更新为2.0.0
  3. 更新my-app/package.json以使用package-to-update@2.0.0
  4. cd package-to-update && npm link && cd my-appp && npm link package-to-update
  5. 测试my-app,发现package-to-update@2.0.0解决了这个问题,参加了一个小型聚会。
  6. 推送到package-to-update的上游,创建合并请求,并等待维护者合并我的更改。
  7. 同时使用我的本地链接版本,这是我正在使用的功能所必需的。
  8. 注意,我在other-unrelated-package中需要另一个软件包my-app
  9. 运行cd my-app && npm install other-unrelated-package
  10. NPM失败,因为它正在尝试提取尚未发布的package-to-update@2.0.0
  11. 哭。

这里是您每次npm install每次运行以下过程的唯一选择吗?

  1. package-to-update中降级my-app/package.json
  2. 运行npm install other-package
  3. 运行npm link package-to-update
  4. package-to-update中升级my-app/package.json”。

1 个答案:

答案 0 :(得分:0)

我通常只使用npm link进行开发。如果我要使用本地版本,而不必处理重新链接,则可以通过路径而不是版本来安装它。

npm install /file/path/to/your/module

然后,您在file:中将得到一个package.json这样的URL:

    "slug": "file:../../slug"

在这种情况下,随后的npm install将不会搜索注册表。 (因为它将避免将来运行npm install的注册表,所以这也意味着您需要记住在发布带有补丁的版本时将其更改回注册表!)

我尚未测试,但是此方法可能要求您仅将其视为直接依赖项,而不是另一个依赖项的依赖项。根据您上面的工作流程,情况似乎确实如此,但在此向其他人提及。