gpt4 book ai didi

node.js - npm 更新 : pull from github repo not taking latest commit

转载 作者:行者123 更新时间:2023-12-04 14:11:18 26 4
gpt4 key购买 nike

项目中的包之一基于内部 npm 存储库。

{
"dependencies": {
"my-library": "git+ssh://<gitrepo>#dist"
}
}
其中 dist 是要克隆的分支。这“有效”,因为它安装了正确的版本。但是,每当此分支发生更新时,我都无法使用 npm 进行更新? - 我试过 npm update My-Library但这只是下载旧的提交,它不会转移到同一分支中的新提交。
我发现的唯一“解决方案”是从 node_modules 文件夹中手动删除库,并删除 package-lock.json 中的库条目。 (或将那里的引用更新为正确的提交)。
使库遵循另一个 git 存储库的最新版本的正确方法是什么?
编辑:如果这只是一个明确的“不支持”,那对我来说也足够了。

最佳答案

从我的理解和实验来看,问题似乎与 package-lock.json 的方式有关。工作。我设置了一个库,其中一个依赖项设置为

"fn-with-hooks": "git+ssh://git@github.com/hackape/fn-with-hooks.git#master"
和初始 npm install会生成 package-lock.json包含
"fn-with-hooks": {
"version": "git+ssh://git@github.com/hackape/fn-with-hooks.git#fa1e21a8ea2fd2b0b7ec5897b954266791b56ac4",
"from": "git+ssh://git@github.com/hackape/fn-with-hooks.git#master"
},
如您所见, version字段被锁定到特定的提交哈希,随后调用 npm install不会更改此版本字段,从而防止“跟踪”分支直到最新提交。这就是 lockfile 应该如何工作。
删除 package-lock.json , (无需删除 node_module/lib )然后 npm install可以解决这个问题。
我的直接想法是尝试从 package-lock.json 中排除这个特定的库。 .但是 npm lockfile 是一种批发解决方案,不提供这种细粒度的控制。
所以这条路的唯一选择是禁用 package-lock.json .
如果您仍然打算使用 package-lock.json ,一种解决方法是手动运行 npm update lib-name命令强制将该库更新到最新版本。这也将更新 version相应地锁定文件中的字段。

更新
我不知道为什么 npm update对你不起作用。它适用于我的。也许您想仔细检查一下这是否确实是事实,还是您的误解。虽然我严重怀疑它,但也可能是 npm 版本差异。我正在使用 v12.14。
我有另一种解决方法,我尝试过并且奏效了。您不必删除整个 package-lock.json文件,您可以重写它以仅排除该 git-base lib 的记录。这种方式 npm 缺少锁定信息,因此强制重新获取您的库。 lockfile 中的其他 lib 记录保持不变,因此限制了影响范围。

关于node.js - npm 更新 : pull from github repo not taking latest commit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64025649/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com