npm instala el package desde la subcarpeta github repo

¿Es posible instalar el package npm desde github cuando el package se encuentra dentro de la subcarpeta?

Por ejemplo, tenemos el repository de Microsoft BotBuilder: https://github.com/Microsoft/BotBuilder

Pero necesito instalar el package dentro de la subcarpeta "Node / core /": https://github.com/Microsoft/BotBuilder/tree/master/Node/core/

Entonces, ¿cómo puedo instalarlo con npm?

Agregar a 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/" ... }, ... 

postinstall secuencia postinstall commands postinstall se ejecuta después de que se instala el package.

Y paso a paso:

  1. Hacer la carpeta para clonar el repository: mkdir BotBuilder
  2. ingrese a la carpeta: cd BotBuilder
  3. init git repo: git init
  4. establecer el origen de git en el repository de Microsoft / BotBuilder: git remote add -f origin https://github.com/Microsoft/BotBuilder.git
  5. habilitar el pago escaso : git config core.sparseCheckout true
  6. agregar Node/core a la list de comprobación: echo "Node/core" >> .git/info/sparse-checkout
  7. extraer parte del repository: git pull --depth=1 origin master
  8. ingrese a la carpeta de su aplicación: cd ..
  9. instalar BotBuilder: npm i ./BotBuilder/Node/core/

Puede estar ligeramente fuera de tema, solo sigue siendo relevante para la pregunta

https://git-scm.com/book/en/v2/Git-Tools-Submodules

Los submodules de Git son repositorys git que puedes usar en otros repositorys (de ahora en adelante, denominados Supermodules). Con cada submodule que tiene la variedad habitual de características y tags de twigs, el beneficio proviene de que cada supermodule es un componente controlado por la versión, que se puede trabajar por separado o desarrollado junto con el supermodule.

Algunos pocos commands útiles

Para agregar un submodule, ejecute lo siguiente dentro de su supermodule:

 git submodule add <url-to-submodule-repo> 

El (los) submodule (s) aún tienen que ser inicializados y recuperados del repository:

git submodule init git submodule update

Se puede clonar un supermodule con submodules y ejecutar todos los submodules ejecutando:

git clone --recursive <url-to-supermodule>

Puede realizar cambios en la cadena ascendente a la twig de un submodule ejecutando lo siguiente dentro del directory de submodules:

git fetch

A continuación, ejecute lo siguiente para actualizar el código local:

git merge

Lo siguiente searchá y fusionará todos los submodules en su supermodule:

git submodule update --remote

Si desea rastrear una twig específica de un submodule, puede usar lo siguiente:

git config -f .gitmodules submodule.<my-submodule>.branch fantastic_new_implementation

Si ha trabajado en sus supermodules y submodules y empuja su supermodule, los cambios realizados en los submodules solo existirán localmente y aquellos con los que queuebora no conocerán estos cambios. El siguiente command verificará si sus submodules han sido empujados ANTES de intentar empujar su supermodule

git push --recurse-submodules=check

Finalmente, aquí hay un útil command ForEach , que nos permite ejecutar un command para cada submodule

git submodule foreach 'git checkout -b featureA