web-dev-qa-db-fra.com

paquet d'installation npm à partir du sous-dossier github repo

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?

18
Ceridan

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:

  1. Créer un dossier pour cloner le référentiel: mkdir BotBuilder
  2. entrez dans le dossier: cd BotBuilder
  3. init git repo: git init
  4. définissez git Origin sur le référentiel Microsoft/BotBuilder: git remote add -f Origin https://github.com/Microsoft/BotBuilder.git
  5. activer paiement clairsemé : git config core.sparseCheckout true
  6. ajouter Node/core à la liste de commande: echo "Node/core" >> .git/info/sparse-checkout
  7. extraire une partie du repo: git pull --depth=1 Origin master
  8. entrez dans le dossier de votre application: cd ..
  9. installer BotBuilder: npm i ./BotBuilder/Node/core/
20
Tomasz Jakub Rup

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

2
Thembelani M