在package.json中使用git URL依赖分支或标记?

时间:2013-05-03 02:28:23

标签: git dependencies npm branch git-tag

假设我已经使用bug修复了一个节点模块,我想在功能分支上使用我的固定版本,直到错误修复被合并和发布。

如何在dependencies的{​​{1}}中引用我的固定版本?

5 个答案:

答案 0 :(得分:518)

来自npm docs

git://github.com/<user>/<project>.git#<branch>

git://github.com/<user>/<project>.git#feature\/<branch>

从NPM版本1.1.65开始,您可以这样做:

<user>/<project>#<branch>

答案 1 :(得分:127)

根据@ dantheta的评论:

  

从npm 1.1.65开始,Github URL可以更简洁的用户/项目。 npmjs.org/doc/files/package.json.html您可以附加分支,如user / project#branch

所以

"babel-eslint": "babel/babel-eslint",

或者对于jscs上的标签v1.12.0:

"jscs": "jscs-dev/node-jscs#v1.12.0",

注意,如果你使用npm --save,你会得到更长的git

来自https://docs.npmjs.com/files/package.json#git-urls-as-dependencies

  

Git URL as Dependencies

     

Git网址可以是以下形式:

     

GIT中://github.com/user/project.git#commit-ish   的git +的ssh://用户名@主机名:project.git#提交十岁上下   混帐+ SSH://user@hostname/project.git#commit-ish   GIT中+ http://user@hostname/project/blah.git#commit-ish   git + https://user@hostname/project/blah.git#commit-ish

     

commit-ish   可以是任何标记,sha或分支,可以作为参数提供   git checkout。默认值为master。

     

GitHub网址

     

从版本1.1.65开始,您可以将GitHub网址称为&#34; foo&#34;:   &#34;用户/富项目&#34 ;.就像使用git URL一样,commit-ish后缀也可以   包括在内。例如:

     

{&#34; name&#34;:&#34; foo&#34;,
      &#34;版本&#34;:&#34; 0.0.0&#34;,
      &#34;依赖&#34;:{         &#34;表达&#34;:&#34; visionmedia / express&#34;,         &#34; mocha&#34;:&#34; visionmedia / mocha#4727d357ea&#34;     }}

答案 2 :(得分:37)

如果您想使用develfeature分支,或者您尚未将某个软件包发布到NPM注册表,或者您不能,因为它是私有模块,那么您可以指向使用git://而不是package.json中的版本号:

"dependencies": {
   "public": "git://github.com/user/repo.git#ref",
   "private": "git+ssh://git@github.com:user/repo.git#ref"
}

#ref部分是可选的,它可以是分支(如master),标记(如0.0.1)或部分或完整提交ID。

答案 3 :(得分:25)

在最新版本的NPM上你可以这样做:

npm install gitAuthor/gitRepo#tag

如果repo是有效的NPM包,它将在package.json中自动别名为:

{ "NPMPackageName": "gitAuthor/gitRepo#tag" }

如果您可以将此添加到@justingordon的答案,那么现在就不需要手动别名了!

答案 4 :(得分:0)

如果它可以帮助任何人,那么我尝试了上述所有操作(使用https:// w / token模式)-仍然没有任何效果。我没有错误,但是在node_modules或package_lock.json中没有安装任何内容。如果我更改了回购名称或用户名中的令牌或任何字母,等等。-我会收到错误消息。所以我知道我有正确的令牌和回购名称。

我终于意识到这是因为我在package.json中拥有的依赖项的名称与我尝试提取的回购的package.json中的名称不匹配。甚至npm install --verbose也不表示有任何问题。似乎忽略了没有错误的依赖性。