node.js – 让npm从Git repo获取最新的包

我的问题类似于
this one.

项目依赖于Git模块,该模块驻留在私有托管的存储库中:

"dependencies": {
  "mymod": "git+https://mygitserver:8443/scm/od/mymod.git",
  ...
}

目的是使其成为快照依赖项,因此每当修改任何mymod代码时,项目都会下拉最新版本.

问题是,我应该使用什么命令将项目更新到最新版本的模块?

我发现的唯一有用的是:

rm -rf node_modules/mymod
npm install

单独运行npm install不会做任何事情(假设它已经运行过一次),正如@Vishwanath在他的问题中所指出的那样,因为模块已经安装. npm升级是不合适的,因为我也依赖于很多其他模块,我不想将它们全部升级到更新的版本.

我想我可以显式地对mymod进行版本化,然后在新版本发生变化时使用新版本更新我的本地package.json,但这会创建一个持续的维护任务.

似乎npm有足够的信息来确定何时需要升级,因为node_modules / mymod / package.json包含最后一个已知的头版本,它可以与当前的头版本进行比较:

"gitHead": "b63f0df8ef...",
"_resolved": "git+https://mygitserver:8443/scm/od/mymod.git#b63f0df8ef..."

npm是否有像这样处理快照依赖的首选方法?

最佳答案 我找不到更好的方法来做到这一点,我最终在package.json中添加了一个脚本,手动安装我需要的包,

将一个脚本添加到package.json,它将更新所需的包:

"scripts": {
   "update:packages": "npm install git+ssh://git@GIT_URL_HERE#master"
}

虽然这与手动更新软件包相同,正如@chris在另一个答案的评论中所说,这更容易,可以用于:

npm run update:packages

注意 – 最后的#master将安装此标记的最后更改(主分支),不是最佳的,但这允许您安装包而无需每次手动更改标记.

更新 – 如果您需要这个用于开发,并且私有存储库中的包是您在本地工作的东西(比如我),您可以简单地将框架链接到项目,所有更改将立即显示而无需重新安装, more info on link

cd /path/to/working/dir
npm link ../path/to/package/dir

更新2
如果您使用Docker,npm链接将不会转发到docker,这是因为链接正在设置到本地npm文件夹的软链接.
为避免这种情况,您需要在泊坞窗内设置软链接.

点赞