【问题标题】:How to update NPM package installed from a Git repository?如何更新从 Git 存储库安装的 NPM 包?
【发布时间】:2020-07-01 13:27:33
【问题描述】:

我不知道如何更新从 git 存储库安装的包。

假设我在git+ssh://git@gitlab.example.com:project/my-package.git 有一个包,它已经安装了。

现在,如果我:

  1. 推入 my-package master 分支;
  2. 运行 npm i 或 npm 更新;

然后没有更新

我认为 version 字段(来自 my-package 的依赖 package.json)可能会引发问题,因此我将其删除并从头开始重新安装该软件包。不幸的是,它没有帮助,软件包仍然没有更新。

有什么想法吗?

【问题讨论】:

  • 这能回答你的问题吗? npm git repository not updating versions
  • @RobC 谢谢,我看到了这个话题,但它没有回答我的问题。作者使用了提交哈希,这不是我的情况,因为我需要我的包来跟踪我猜是主分支的最新更改。
  • 您是否尝试过删除 node_modules 目录,然后运行 ​​npm i
  • 是的,罗伯。它会按应有的方式获取最新版本,但在此之后它会失去进一步更新它的能力:master 的新提交永远不会再次被获取。
  • 查看问题#1727 - 我认为目前唯一的方法是在每次提交到 git 后重新安装它。但是,我确信这将是一个功能very soon

标签: javascript node.js npm


【解决方案1】:

好的,伙计们。令人惊讶的是,它似乎无法开箱即用。

但是有一个解决方法。感谢@RobC 指出一些旧的(但从未解决)问题:https://github.com/npm/npm/issues/1727

答案在最后一条评论中:

https://github.com/npm/npm/issues/1727#issuecomment-354124625

基本上,要更新一个 git 包,您必须直接使用 重新安装它:npm install package-name

示例。假设您已经安装了软件包并添加到依赖项中,如下所示:

{
    "dependencies": {
        "my-package": "git+ssh://git@gitlab.my.com:prj/my-package.git"
    }
}

现在,要在您发出npm i 时更新它,您所要做的就是创建一个postinstall 脚本来触发npm i my-package

{
    "dependencies": {
        "my-package": "git+ssh://git@gitlab.my.com:prj/my-package.git"
    },
    "scripts": {
        "postinstall": "npm update && npm i my-package"
    }
}

现在npm i 将花费更多时间,因为它会运行两次安装。但这就是我们现在所拥有的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-03
    • 1970-01-01
    • 2013-02-15
    • 2014-05-07
    • 2023-03-16
    • 1970-01-01
    • 2020-10-06
    • 1970-01-01
    相关资源
    最近更新 更多