474 Stimmen

Hängt von einem Zweig oder Tag ab, der mit einer Git-URL in einer package.json angegeben ist?

Sagen wir, ich habe ein Node-Modul mit einem Bugfix geforkt und möchte meine behobene Version verwenden, natürlich auf einem Feature-Branch, bis der Bugfix gemerged und veröffentlicht wird.

Wie könnte ich meine behobene Version in den Abhängigkeiten meines package.json referenzieren?

662voto

hurrymaplelad Punkte 25235

Lösung 1

Aus den npm-Dokumenten, Verwendung einer Git-URL:

https://github.com//.git#

https://github.com//.git#feature\/

Verwenden Sie nicht das git:// Protokoll für GitHub, es wird nicht mehr unterstützt

Lösung 2

Ab NPM-Version 1.1.65 können Sie eine verkürzte GitHub-URL verwenden:

/#

153voto

justingordon Punkte 12043

Laut @dantheta's Kommentar:

Ab npm 1.1.65 kann die Github-URL kürzer sein mit Benutzer/Projekt. npmjs.org/doc/files/package.json.html Du kannst den Branch wie Benutzer/Projekt#Branch anhängen

So

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

Oder für Tag v1.12.0 auf jscs:

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

Beachte, wenn du npm --save verwendest, erhältst du das längere git

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

Git-URLs als Abhängigkeiten

Git-URLs haben die Form:

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

Wenn # angegeben wird, wird genau dieser Commit geklont. Wenn der Commit-isch das Format #semver: hat, kann eine beliebige gültige Semver-Range oder exakte Version sein, und npm wird nach Tags oder Referenzen suchen, die diesen Bereich im Remote-Repository entsprechen, ähnlich wie bei einer Registry-Abhängigkeit. Wenn weder # noch #semver: angegeben sind, wird Master verwendet.

GitHub-URLs

Ab Version 1.1.65 kannst du auf GitHub-URLs verweisen als einfach "foo": "Benutzer/foo-Projekt". Genauso wie bei Git-URLs kann ein Commit-Suffix enthalten sein. Zum Beispiel:

{
 "name": "foo",
 "version": "0.0.0",
 "dependencies": {
   "express": "expressjs/express",
   "mocha": "mochajs/mocha#4727d357ea",
   "module": "user/repo#feature\/branch"
 }
}```

55voto

Fizer Khan Punkte 79079

Wenn Sie den devel oder feature Zweig verwenden möchten, oder wenn Sie ein bestimmtes Paket noch nicht im NPM-Register veröffentlicht haben oder nicht können, weil es sich um ein privates Modul handelt, können Sie stattdessen auf eine git:// URI statt einer Versionsnummer in Ihrer package.json verweisen:

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

Der Teil #ref ist optional und kann ein Zweig (wie master), Tag (wie 0.0.1) oder eine teilweise oder vollständige Commit-ID sein.

28voto

vortex Punkte 862

In der neuesten Version von NPM können Sie einfach Folgendes tun:

npm install gitAuthor/gitRepo#tag

Wenn das Repository ein gültiges NPM-Paket ist, wird es automatisch in der package.json wie folgt aliasiert:

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

Wenn Sie dies zu @justingordon 's Antwort hinzufügen könnten, ist jetzt kein manuelles Aliasieren mehr erforderlich!

0voto

Yasin UYSAL Punkte 571

Wenn Sie einen bestimmten Commit verwenden möchten, können Sie dies tun

Vorlage:

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

Beispiel für die Verwendung in der Package.json:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X