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

hur*_*lad 377 git dependencies branch git-tag npm

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

我怎么会引用我的固定版本在dependencies我的package.json

hur*_*lad 546

来自npm文档:

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

git://github.com/<user>/<project>.git#feature\/<branch>
Run Code Online (Sandbox Code Playgroud)

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

<user>/<project>#<branch>
Run Code Online (Sandbox Code Playgroud)

  • 从npm 1.1.65开始,Github URL可以更简洁`user/project`.https://www.npmjs.org/doc/files/package.json.html您可以附加分支,如`user/project#branch` (127认同)
  • 你如何包括版本号? (4认同)
  • 更新的NPM文档链接https://docs.npmjs.com/files/package.json#github-urls (3认同)
  • `git://github.com/ <user>/<project> .git#feature/blah`工作但是`<user>/<project> .git#feature/blah`没有...也许他们的正则表达式需求更高级的考虑到`feature/blah`.这是npm`v1.4.28` (2认同)

jus*_*don 132

根据@ dantheta的评论:

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

所以

"babel-eslint": "babel/babel-eslint",
Run Code Online (Sandbox Code Playgroud)

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

"jscs": "jscs-dev/node-jscs#v1.12.0",
Run Code Online (Sandbox Code Playgroud)

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

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

Git URL作为依赖项

Git网址可以是以下形式:

git://github.com/user/project.git#commit-ish git + ssh:// user @ hostname:project.git#commit-ish 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 URL称为"foo":"user/foo-project".与git URL一样,可以包含commit-ish后缀.例如:

{"name":"foo",
"version":"0.0.0",
"dependencies":{"express":"visionmedia/express","mocha":"visionmedia/mocha#4727d357ea"}}

  • 根据提交,sha1应该是首选选项,特别是如果您依赖于不受您控制的回购.Git分支和标签不是不可变的(可以被恶意/意外地删除/更改),而(几乎)不可能创建sha1冲突. (2认同)
  • 我可以有一个分支和一个 commit-ish 的提交吗? (2认同)

Fiz*_*han 40

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

"dependencies": {
   "public": "git://github.com/user/repo.git#ref",
   "private": "git+ssh://git@github.com:user/repo.git#ref"
}
Run Code Online (Sandbox Code Playgroud)

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


vor*_*tex 25

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

npm install gitAuthor/gitRepo#tag

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

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

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

  • 不,它不是.它安装不正确.不知何故,它不包括存储库中的整个目录结构,只包括一些文件,如package.json,yarn.lock,readme和license.没有src或dist文件夹. (2认同)