我有一个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
会自动更新此代码。
答案 0 :(得分:8)
好的,这就是它的完成方式。
我也很困惑。
所以我在git@github.com上有一个私人npm模块:myModule / MySweetModule.git
我刚刚发布了最新的标记版本。不幸的是我无法弄清楚它是如何工作的,但它可以解决你的主人问题。 SOOO你的主分支可以是你的集成分支,你有阶段分支来构建下一个版本。完成版本后,只需将其合并到master并增加私有repo的版本(因此您的私有repo现在从1.0.0升级到1.0.1)。如果您致电npm install
,如果主人的package.json版本大于当前工作回购,它将更新您的仓库。它将始终采用最新的回购。
我同意。所以,让我们做一个更好的方式!如果您tags
用于私人回购发布,则可以"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
。
答案 1 :(得分:3)
这是fixed在npm,请升级到npm> = 1.3.10
样本用法
"dependencies": {
"thing": "git://github.com/myGitHubRepo/repo.js.git#56477cb",
}
某天后
"dependencies": {
"thing": "git://github.com/myGitHubRepo/repo.js.git#67f90b5",
}
再次npm install
,你会得到新的参考!
如果您的“myGitHubRepo / repo.js”是private个套餐,那么您应该设置"private": true
以确保它不会accidentally published to npm registry
答案 2 :(得分:0)
手动更新那个特定的包对我有用。
为了自动做到这一点,我将此安装后脚本添加到我的 package.json
"scripts": {
...
"postinstall": "npm update custom"
}