我有一个git repo,我试图在我的项目中将它设置为依赖项。使用NPM,我的package.json
看起来像这样:
"devDependencies": {
"grunt": "~0.4.0",
"grunt-contrib-connect": "~0.2.0",
"grunt-contrib-watch": "~0.3.1",
"custom": "git://github.com/myGitHubRepo/repo.js.git#b7d53a0cfbe496ad89bde6f22324219d098dedb3",
"grunt-contrib-copy": "~0.4.0"
}
在第一
npm install
它安装一切并获取存储库没有问题。但是如果我把这个提交哈希改成
"custom": "git://github.com/myGitHubRepo/repo.js.git#d6da3a0...", // a different one
它不更新!谁能告诉我,我是怎么得到这种行为的?
我只是想分享这段代码,并能够在某个时候改变这个版本,npm
将自动更新这一点。
5条答案
按热度按时间wnvonmuf1#
好吧,这是如何做到的。
我也很困惑。
所以我在www.example.com上有一个私有的npm模块git@github.com:myModule/MySweetModule.git我刚刚发布了最新的标记版本。不幸的是,我不知道这是如何工作的,但它的工作关闭你的主人。SOOO你的master分支可以是你的集成分支,你有构建下一个版本的stage分支。在版本完成后,只需将其合并到master中并增加您的私有仓库的版本(因此您的私有仓库现在从1.0.0变为1.0.1)。如果你调用
npm install
,如果master的package.json版本高于当前工作的repo,它会更新你的repo。它总是会采取最新的回购。那感觉糟透了
我同意。所以让我们用更好的方式来做吧!如果您使用
tags
作为您的私有repo版本,您可以通过"custom": "git+ssh://git@github.com:usr/proj.git#TAG_NAME"
引用它们如果我有一个名为
0.1.0
的标签,那么我会像这样对package.json中的URL进行版本化。"custom": "git+ssh://git@github.com:usr/proj.git#0.1.0"
我相信这是你回答问题的最佳方法。但我不是gitanista
警告
如果您尝试返回一个版本,它似乎不工作。因此从
0.2.2
版本到0.2.1
版本,它不会更新您的项目。如果要回滚一个版本,请确保先执行npm remove myProj
,然后执行npm install
。evrscar22#
手动更新那个特定的包对我来说很有用。
为了自动完成这个任务,我将这个postinstall脚本添加到了我的package.json中
mv1qrgav3#
我遇到了这个问题,所有的答案都有自己的一套问题,所以我必须找到一个更好的手段。
我发现了一种新的方法来防止这个npm问题,在docs中安装包升级(这可能需要更新版本的npm):
确保您在存储库中标记版本。
然后你可以使用这个稍微修改过的URL来包含你的repo:
这表现得更好,并没有问题,降级或升级版本,因为我已经看到到目前为止。
uxh89sit4#
手动更新软件包,建议by @Nestoro也适用于我:
svmlkihl5#
我找到的解决方案是删除
package-lock.json
,然后执行npm i