Est-il possible d'installer le paquet npm à partir de github lorsque le paquet se trouve dans le sous-dossier?
Par exemple, nous avons le référentiel Microsoft BotBuilder: https://github.com/Microsoft/BotBuilder
Mais je dois installer le paquet dans le sous-dossier "Node/core /": https://github.com/Microsoft/BotBuilder/tree/master/Node/core/
Alors, comment puis-je l'installer avec npm?
Ajouter à package.json
:
...
"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/"
...
},
...
Le script postinstall
est en cours d'exécution après l'installation du package.
Et pas à pas:
mkdir BotBuilder
cd BotBuilder
git init
git remote add -f Origin https://github.com/Microsoft/BotBuilder.git
git config core.sparseCheckout true
Node/core
à la liste de commande: echo "Node/core" >> .git/info/sparse-checkout
git pull --depth=1 Origin master
cd ..
npm i ./BotBuilder/Node/core/
Peut-être légèrement en dehors du sujet, mais toujours pertinent pour la question
https://git-scm.com/book/en/v2/Git-Tools-Submodules
Les sous-modules Git sont des repos Git que vous pouvez utiliser dans d'autres repos (ci-après, appelés supermodules). Chaque sous-module ayant la gamme habituelle de caractéristiques et d’étiquettes de branches, l’avantage est que chaque supermodule est un composant enfichable à contrôle de version, pouvant être travaillé séparément ou développé parallèlement au supermodule.
Quelques commandes utiles
Pour ajouter un sous-module, vous exécutez ce qui suit dans votre supermodule:
git submodule add <url-to-submodule-repo>
Le ou les sous-modules doivent encore être initialisés et récupérés à partir du référentiel:
git submodule init
git submodule update
Un supermodule avec des sous-modules peut être cloné et tous les sous-modules récupérés en exécutant:
git clone --recursive <url-to-supermodule>
Vous pouvez extraire les modifications en amont d'une branche de sous-module en exécutant les opérations suivantes dans le répertoire de sous-modules:
git fetch
Puis exécutez ce qui suit pour mettre à jour le code local:
git merge
Les éléments suivants vont chercher et fusionner pour tous les sous-modules de votre supermodule:
git submodule update --remote
Si vous souhaitez suivre une branche spécifique d'un sous-module, vous pouvez utiliser les éléments suivants:
git config -f .gitmodules submodule.<my-submodule>.branch fantastic_new_implementation
Si vous avez travaillé sur vos supermodules et sous-modules et que vous poussez votre supermodule, les modifications apportées aux sous-modules n'existeront que localement et ceux avec lesquels vous collaborerez ne le sauront pas. La commande suivante vérifiera si vos sous-modules ont été poussés AVANT d’essayer de pousser votre supermodule
git Push --recurse-submodules=check
Enfin, voici une commande utile ForEach, qui nous permet d’exécuter une commande pour chaque sous-module
git submodule foreach 'git checkout -b featureA