假设我已经用一个bug修复了一个节点模块,我想使用我的固定版本,当然是在一个特性分支上,直到bug修复被合并并发布。
如何在package.json的依赖项中引用我的固定版本?
假设我已经用一个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"