假设我已经用一个bug修复了一个节点模块,我想使用我的固定版本,当然是在一个特性分支上,直到bug修复被合并并发布。

如何在package.json的依赖项中引用我的固定版本?


解决方案1

在npm文档中,使用git URL:

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

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

不要在GitHub上使用git://协议,它不再被支持

解决方案2

从NPM版本1.1.65开始,你可以使用一个缩短的github URL:

<user>/<project>#<branch>

@dantheta评论:

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

So

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

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

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

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

从https://docs.npmjs.com/cli/v6/configuring-npm/package-json git-urls-as-dependencies

作为依赖项的 Git URL Go 网址的形式如下: git+ssh://git@github.com:npm/cli.git#v1.0.27 git+ssh://git@github.com:npm/cli#semver:^5.0 git+https://isaacs@github.com/npm/cli.git git://github.com/npm/cli.git#v1.0.27

如果提供了#<commit-ish>,它将被用于精确地克隆该提交。如果提交文件>的格式为#semver:<semver>, <semver>可以是任意值 有效的semver范围或确切的版本,NPM将寻找任何标签或参考 在远程存储库中匹配该范围,就像在注册中心中一样 依赖。如果没有指定#<commit-ish>或#semver:<semver>,则 使用“Master”。

GitHub的url 从版本1.1.65开始,你可以将GitHub url引用为“foo”: “用户/ foo-project”。就像git url一样,一个类似提交的后缀可以是 包括在内。例如: { “名称”:“foo”, “版本”:“0.0.0”, “依赖”:{ “表达”:“expressjs /表达”, “摩卡”:“mochajs /摩卡# 4727 d357ea”, “模块”:“用户/回购#特性\ /分支” } }’‘


如果你想使用devel或feature分支,或者你还没有将某个包发布到NPM注册表中,或者因为它是私有模块而不能发布,那么你可以在package.json中指向git:// URI而不是版本号:

"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。


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

npm install gitAuthor/gitRepo#标签

如果repo是一个有效的NPM包,它将在包中自动别名化。json:

{ “NPMPackageName”: “gitAuthor/gitRepo#tag” }

如果你能把这个添加到@justingordon的答案中,现在就不需要手动别名了!


如果这对任何人都有帮助,我尝试了上面的所有方法(https w/token模式)-仍然没有任何工作。我没有得到错误,但什么都不会安装在node_modules或package_lock.json。如果我更改了令牌或回购名称或用户名中的任何字母,等等-我会得到一个错误。所以我知道我有正确的代币和回购名称。

我最终意识到这是因为包中依赖项的名称。Json与包中的名称不匹配。我试图拉的回购的json。甚至npm install——verbose也没有说有任何问题。它似乎忽略了依赖关系w/o错误。


如果你想使用任何特定的提交;你可以用这个

模板:

github:{UserName}/{RepoName}#{CommitId}

Package.json中的用法示例:

"react": "github:facebook/react#e40893d097f6894b4768d749f796302c57161734"