【问题标题】:Install package from npm after linking to another local package with updated version在链接到另一个具有更新版本的本地包后从 npm 安装包
【发布时间】:2020-11-01 01:11:25
【问题描述】:

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

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

我做了什么:

  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. 请注意,我需要 my-app 中的另一个包 other-unrelated-package
  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. my-app/package.json"中升级package-to-update

【问题讨论】:

    标签: npm npm-install npm-link


    【解决方案1】:

    我一般只使用npm link进行开发。如果我想使用本地版本并且不必处理重新链接,我会通过路径而不是版本来安装它。

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

    然后你会在你的package.json 中得到一个像这样的file: URL:

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

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

    我没有测试过,但是这个方法可能需要你只关心它作为一个直接依赖而不是另一个依赖的依赖。根据您上面的工作流程,情况似乎是这样,但在这里为其他人提及。

    【讨论】:

    • 但是我不想永久依赖我的本地版本,我只想在开发过程中使用它。当我的功能完成后,我想将合并请求标记为 WIP,直到上游存储库接受并合并我的更改,我们可以在 CI 中使用官方更新的包。
    猜你喜欢
    • 2017-09-30
    • 1970-01-01
    • 1970-01-01
    • 2020-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-04
    • 1970-01-01
    相关资源
    最近更新 更多