Ist es möglich, das npm-Paket von github zu installieren, wenn sich das Paket im Unterordner befindet?
Beispielsweise verfügen wir über ein Microsoft BotBuilder-Repository: https://github.com/Microsoft/BotBuilder
Ich muss das Paket jedoch im Unterordner "Node/core /": https://github.com/Microsoft/BotBuilder/tree/master/Node/core/ installieren.
Wie kann ich es mit npm installieren?
Zu package.json
hinzufügen:
...
"scripts": {
"postinstall": "mkdir BotBuilder; cd BotBuilder; git init; git remote add -f Origin https://github.com/Microsoft/BotBuilder.git; git config core.sparseCheckout true; echo \"Node/core\" >> .git/info/sparse-checkout; git pull --depth=1 Origin master; cd ..; npm i ./BotBuilder/Node/core/"
...
},
...
Das Skript postinstall
wird ausgeführt, nachdem das Paket installiert wurde.
Und Schritt für Schritt:
mkdir BotBuilder
cd BotBuilder
git init
git remote add -f Origin https://github.com/Microsoft/BotBuilder.git
git config core.sparseCheckout true
Node/core
zur Checkliste hinzufügen: echo "Node/core" >> .git/info/sparse-checkout
git pull --depth=1 Origin master
cd ..
npm i ./BotBuilder/Node/core/
Könnte etwas außerhalb des Themas sein, nur noch relevant für die Frage
https://git-scm.com/book/de/v2/Git-Toolss-Submodules
Git-Submodule sind Git-Repos, die Sie in anderen Repos verwenden können (im Folgenden als Supermodule bezeichnet). Da jedes Submodul das übliche Sortiment an Verzweigungsmerkmalen und Tags hat, hat jeder Supermodul den Vorteil, dass er versionierbare, steckbare Komponenten ist, die separat bearbeitet oder zusammen mit dem Supermodul entwickelt werden können.
Einige nützliche Befehle
Um ein Submodul hinzuzufügen, führen Sie in Ihrem Supermodul Folgendes aus:
git submodule add <url-to-submodule-repo>
Die Submodule müssen noch initialisiert und vom Repo abgerufen werden:
git submodule init
git submodule update
Ein Supermodul mit Submodulen kann geklont und alle Submodule abgerufen werden, indem Sie Folgendes ausführen:
git clone --recursive <url-to-supermodule>
Sie können Upstream-Änderungen in den Zweig eines Submoduls übernehmen, indem Sie Folgendes im Submodulverzeichnis ausführen:
git fetch
Führen Sie dann Folgendes aus, um den lokalen Code zu aktualisieren:
git merge
Folgendes wird abgerufen und für alle Submodule in Ihrem Supermodul zusammengeführt:
git submodule update --remote
Wenn Sie einen bestimmten Zweig eines Submoduls verfolgen möchten, können Sie Folgendes verwenden:
git config -f .gitmodules submodule.<my-submodule>.branch fantastic_new_implementation
Wenn Sie an Ihren Supermodulen und Submodulen gearbeitet haben und Sie Ihr Supermodul pushen, sind Änderungen an Submodulen nur lokal vorhanden, und diejenigen, mit denen Sie zusammenarbeiten, kennen diese Änderungen nicht. Der folgende Befehl überprüft, ob Ihre Submodule gedrückt wurden, BEVOR Sie versuchen, Ihr Supermodul zu drücken
git Push --recurse-submodules=check
Zum Schluss noch ein nützlicher ForEach -Befehl, mit dem wir für jedes Submodul einen Befehl ausführen können
git submodule foreach 'git checkout -b featureA