Ich versuche, Github Private Repository von Npm zu installieren, das andere private Github-Repositorys als Abhängigkeit enthält.
Habe viele Wege und Beiträge ausprobiert, aber keiner funktioniert. Folgendes mache ich:
npm install git+https://github.com/myusername/mygitrepository.git
in package.json ist wie folgt:
"dependencies": {
"repository1name": "git+https://github.com/myusername/repository1.git",
"repository2name": "git+https://github.com/myusername/repository2.git"
}
Was ist der richtige Weg, um es zu tun?
Das Folgende funktionierte in allen von mir benötigten Szenarien einwandfrei:
"dependencies": {
"GitRepo": "git+https://<token-from-github>:[email protected]/<user>/<GitRepo>.git"
}
Versuche dies:
"dependencies" : {
"name1" : "git://github.com/user/project.git#commit-ish",
"name2" : "git://github.com/user/project.git#commit-ish"
}
Sie können dies auch versuchen, wobei visionmedia/express name/repo ist:
"dependencies" : {
"express" : "visionmedia/express"
}
Oder (falls das Paket npm existiert):
"dependencies" : {
"name": "*"
}
Entnommen aus NPM-Dokumente
Für diejenigen von Ihnen, die aus öffentlichen Verzeichnissen hierher gekommen sind, aus den npm-Dokumenten: https://docs.npmjs.com/files/package.json#git-urls-as-dependencies
Git-URLs können folgende Form haben:
git://github.com/user/project.git#commit-ish
git+ssh://[email protected]:project.git#commit-ish
git+ssh://[email protected]/project.git#commit-ish
git+http://[email protected]/project/blah.git#commit-ish
git+https://[email protected]/project/blah.git#commit-ish
Das Commit-ish kann ein beliebiges Tag, sha oder ein Zweig sein, der als Argument für git checkout angegeben werden kann. Der Standardwert ist master.
Die akzeptierte Antwort funktioniert, aber ich mag die Idee, sichere Token in den package.json
- Code einzufügen, nicht sehr.
Ich habe es woanders gefunden, führe einfach diesen einmaligen Befehl aus wie in der git-config-Manpage dokumentiert .
git config --global url."https://${GITHUB_TOKEN}@github.com/".insteadOf [email protected]:
GITHUB_TOKEN
Kann als Umgebungsvariable eingerichtet oder direkt eingefügt werden
und dann installiere ich private Github-Repos wie: npm install user/repo --save
funktioniert auch in Heroku. Richten Sie einfach den obigen Befehl git config ...
als heroku-prebuild
- Skript in package.json
und GITHUB_TOKEN
als Heroku-Konfigurationsvariable ein.
Es gibt mehrere Möglichkeiten, dies zu tun, wie die Leute betonen, aber die kürzesten Versionen sind:
// from master
"depName": "user/repo",
// specific branch
"depName": "user/repo#branch",
// specific commit
"depName": "user/repo#commit",
z.B.
"dependencies" : {
"hexo-renderer-marked": "amejiarosario/hexo-renderer-marked#patch-1",
"hexo-renderer-marked": "amejiarosario/hexo-renderer-marked#2249507",
"hexo-renderer-marked": "amejiarosario/hexo-renderer-marked",
}
"dependencies": {
"some-package": "github:github_username/some-package"
}
oder nur
"dependencies": {
"some-package": "github_username/some-package"
}
Da Git curl
unter der Haube verwendet, können Sie die Datei ~/.netrc
mit den Anmeldeinformationen verwenden. Für GitHub würde es ungefähr so aussehen:
machine github.com
login <github username>
password <password OR github access token>
Wenn Sie access tokens
Verwenden, kann dies generiert werden aus:
Einstellungen -> Entwicklereinstellungen -> Persönliche Zugriffstoken
Dies sollte auch funktionieren, wenn Sie Github Enterprise in Ihrem eigenen Unternehmen verwenden. Geben Sie einfach Ihre Unternehmens-Github-URL in das Feld machine
ein.
Hier finden Sie eine detailliertere Version der Verwendung des Github-Tokens ohne Veröffentlichung in der Datei package.json
.
git config --global url."https://<TOKEN HERE>:[email protected]/".insteadOf https://[email protected]/
npm install --loglevel verbose --save git+https://[email protected]/<USERNAME HERE>/<REPOSITORY HERE>.git#v0.1.27
Falls der Zugriff auf Github fehlschlägt, versuchen Sie, den Befehl git ls-remote ...
Auszuführen, den npm install will print
Als Referenz für mein privates Repository wollte ich kein sicheres Token einschließen, und keines der anderen einfachen (d. H. Nur in package.json angeben) funktionierte. Folgendes hat funktioniert: