¿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:
mkdir BotBuilder
cd BotBuilder
git init
git remote add -f origin https://github.com/Microsoft/BotBuilder.git
git config core.sparseCheckout true
Node/core
a la list de comprobación: echo "Node/core" >> .git/info/sparse-checkout
git pull --depth=1 origin master
cd ..
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