【发布时间】:2013-04-27 08:54:00
【问题描述】:
假设我已经派生了一个带有错误修复的节点模块,并且我想在功能分支上使用我的固定版本,直到错误修复被合并并发布。
如何在package.json 的dependencies 中引用我的固定版本?
【问题讨论】:
标签: git dependencies npm branch git-tag
假设我已经派生了一个带有错误修复的节点模块,并且我想在功能分支上使用我的固定版本,直到错误修复被合并并发布。
如何在package.json 的dependencies 中引用我的固定版本?
【问题讨论】:
标签: git dependencies npm branch git-tag
根据@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/cli/v6/configuring-npm/package-json#git-urls-as-dependencies
Git URL 作为依赖项
Git url 的格式为:
git+ssh://git@github.com:npm/cli.git#v1.0.27git+ssh://git@github.com:npm/cli#semver:^5.0git+https://isaacs@github.com/npm/cli.gitgit://github.com/npm/cli.git#v1.0.27
如果提供了
#<commit-ish>,它将用于准确克隆该提交。如果 > commit-ish 的格式为#semver:<semver>,<semver>可以是任何 有效的 semver 范围或确切版本,npm 将查找任何标签或参考 匹配远程存储库中的该范围,就像注册表一样 依赖。如果没有指定#<commit-ish>或#semver:<semver>,则 使用master。
GitHub 网址
从 1.1.65 版开始,您可以将 GitHub 网址称为“foo”: “用户/foo 项目”。就像 git URL 一样,commit-ish 后缀可以是 包括。例如:
{ "name": "foo", "version": "0.0.0", "dependencies": { "express": "expressjs/express", "mocha": "mochajs/mocha#4727d357ea", "module": "user/repo#feature\/branch" } }```
【讨论】:
如果它对任何人有帮助,我尝试了上述所有方法(https w/token 模式) - 仍然没有任何效果。我没有收到任何错误,但 node_modules 或 package_lock.json 中不会安装任何内容。如果我更改了存储库名称或用户名等中的令牌或任何字母 - 我会收到错误消息。所以我知道我有正确的令牌和 repo 名称。
我终于意识到这是因为我在 package.json 中的依赖项名称与我试图提取的 repo 的 package.json 中的名称不匹配。甚至 npm install --verbose 也没有说有任何问题。它似乎只是忽略了没有错误的依赖。
【讨论】:
来自npm docs:
git://github.com/<user>/<project>.git#<branch>
git://github.com/<user>/<project>.git#feature\/<branch>
从 NPM 版本 1.1.65 开始,您可以这样做:
<user>/<project>#<branch>
【讨论】:
user/project。 npmjs.org/doc/files/package.json.html你可以像user/project#branch这样附加分支
git://github.com/<user>/<project>.git#feature/blah 工作但<user>/<project>.git#feature/blah 没有......也许他们的正则表达式需要更高级才能将feature/blah 考虑在内。这是 npm v1.4.28
在最新版本的 NPM 上,您可以这样做:
npm install gitAuthor/gitRepo#tag
如果 repo 是一个有效的 NPM 包,它将在 package.json 中自动别名为:
{
"NPMPackageName": "gitAuthor/gitRepo#tag"
}
如果您可以将此添加到 @justingordon 的答案中,现在就不需要手动别名了!
【讨论】:
如果你想使用devel 或feature 分支,或者你还没有将某个包发布到NPM 注册中心,或者因为它是私有模块而不能发布,那么你可以指向一个@987654323 @URI 而不是你的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。
【讨论】: