La meilleure façon d'exécuter npm install pour les dossiers imbriqués?
Quelle est la plus correcte pour installer npm packages
dans les sous-dossiers?
my-app
/my-sub-module
package.json
package.json
Quel est le meilleur moyen d'avoir des packages
dans /my-sub-module
être installé automatiquement lors de l' npm install
exécuter dans my-app
?
- Je pense que le plus idiomatique chose est d'avoir un seul paquet.fichier json à la à la de votre projet.
- Une idée serait d'utiliser un mécanisme national de prévention script qui exécute un fichier bash.
- Cela pourrait-il pas être fait avec une modificaiton de la façon dont les chemins locaux de travail?: stackoverflow.com/questions/14381898/...
Vous devez vous connecter pour publier un commentaire.
Si vous souhaitez exécuter une seule commande pour installer les packages npm dans les sous-dossiers imbriqués, vous pouvez exécuter un script via
npm
et les principauxpackage.json
dans votre répertoire racine. Le script va visiter chaque sous-répertoire et exécuternpm install
.Ci-dessous est un
.js
script qui permettra d'atteindre le résultat souhaité:Noter que ceci est un exemple tiré d'un StrongLoop article qui traite spécifiquement de la modularité de
node.js
la structure du projet (y compris les composants imbriqués etpackage.json
fichiers).Comme l'a suggéré, vous pouvez également obtenir la même chose avec un script bash.
EDIT: en Fait le code du travail dans Windows
Je préfère à l'aide de post-installation, si vous connaissez le nom de la imbriquée sous répertoire. Dans
package.json
:"postinstall": "cd nested_dir2 && npm install"
pour chaque dossier?Ma solution est très similaire.
Pure Node.js
Le script suivant examine tous les sous-dossiers (de manière récursive) tant qu'ils ont
package.json
et exécutenpm install
dans chacun d'eux.On peut ajouter des exceptions à cela: les dossiers a permis de ne pas avoir
package.json
. Dans l'exemple ci-dessous l'un de ces dossier "packages".On peut l'exécuter en tant que "pré-installer de script".
Juste pour la référence, dans le cas où les gens viennent à travers cette question. Vous pouvez maintenant:
npm install --save path/to/my/subfolder
mkdir -p a/b ; cd a ; npm init ; cd b ; npm init ; npm install --save through2 ;
Maintenant, attendez... vous venez de manuellement installé les dépendances dans les "b", ce n'est pas ce qui se passe quand vous clonez un projet fresh.rm -rf node_modules ; cd .. ; npm install --save ./b
. Maintenant la liste de node_modules, puis la liste b de l'.shelljs
! Nettoyer le support multi-plateforme gratuit.Je préfère utiliser
postinstall
avec npm-run-tous les comme je l'ai souvent de multiples imbriquées projets. En bonus, cette méthode est plus lisible et votre installe exécuter en parallèle, de sorte que l'installation est un peu plus rapide.L'ajout de support de Windows pour snozza de l' réponse
Par @Scott réponse, l'installation|script postinstall est le moyen le plus simple tant que sous-répertoire de noms sont connus. C'est de cette façon que je le lance pour plusieurs sous répertoires. Par exemple, admettons que nous avons
api/
,web/
etshared/
sous-projets dans un monorepo racine:Inspiré par les scripts fournis ici, j'ai construit un configurable exemple:
yarn
ounpm
yarn
mais un répertoire ne dispose que d'unpackage-lock.json
il utiliseranpm
pour ce répertoire (par défaut à true).cp.spawn
yarn workspaces
(configurable)Et avec elle être utilisée: