Le ou les packages seront ensuite installés dans ./install/here/node_modules. Le mkdirest nécessaire car npm pourrait sinon choisir un node_modulesrépertoire déjà existant plus haut dans la hiérarchie. (Voir la documentation npm sur les dossiers .)
Il semble que vous devez avoir le fichier package.json dans ce répertoire alternatif si vous utilisez l'option --prefix. Existe-t-il un moyen d'avoir package.json dans le répertoire courant et de l'installer dans le répertoire alternatif?
2
@fractal Voir ma réponse pour cela
yunzen
10
@coundy Existe-t-il un moyen de spécifier le chemin d'accès npm install(sans nom de package)? J'ai tiré cela directement, mais alors npm cherche package.jsondans le {prefix}. Ce que je vise aussi, c'est de pouvoir laisser le packages.jsondans la racine du projet et en même temps installer tous les packages dans {project root}/{project webroot}.
automatix
J'ai rencontré un problème de récursivité. Existe-t-il un moyen de lui dire de s'exécuter une fois? Je l'ai résolu temporairement en changeant de répertoire puis en appelant npm install, mais cela --prefixsemble être une meilleure solution, si cela ne provoquait pas une récursivité.
adi518
47
Dans la documentation, il est indiqué: Utilisez l'option préfixe avec l'option globale :
La configuration par défaut du préfixe est l'emplacement où le nœud est installé. Sur la plupart des systèmes, il s'agit de / usr / local . Sous Windows, il s'agit de l'emplacement exact du binaire node.exe. Sur les systèmes Unix, c'est un niveau supérieur, car le nœud est généralement installé dans {prefix} / bin / node plutôt que
{prefix} /node.exe .
Lorsque l' indicateur global est défini, npm installe des éléments dans ce préfixe. Lorsqu'il n'est pas défini, il utilise la racine du package actuel ou le répertoire de travail actuel s'il ne se trouve pas déjà dans un package.
(Souligné par eux)
Donc, dans votre répertoire racine, vous pouvez installer avec
npm install --prefix <path/to/prefix_folder>-g
et il installera le node_modulesdossier dans le dossier
@Pavlo Je ne pense pas. Ce n'est pas la réponse au PO.
2015
@Pavlo Si un package est installé globalement, vous en avez besoin de la même manière que d'habitude. Donc, oui, vous pouvez avoir besoin d'un package installé globalement.
Rob Evans
43
Depuis la version 3.8.6 de npm, vous pouvez utiliser
npm install --prefix ./install/here <package>
à installer dans le répertoire spécifié. NPM crée automatiquement un node_modulesdossier même lorsqu'un node_modulesrépertoire existe déjà dans la hiérarchie supérieure. Vous pouvez également avoir un package.jsondans le répertoire en cours, puis l'installer dans le répertoire spécifié en utilisant l' --prefixoption:
npm install --prefix ./install/here
Depuis npm 6.0.0, vous pouvez utiliser
npm install --prefix ./install/here ./
pour installer le package.json dans le répertoire courant vers le répertoire "./install/here". Il y a une chose que j'ai remarqué sur Mac: cela crée un lien symbolique vers le dossier parent dans le répertoire node_modules. Mais cela fonctionne toujours.
REMARQUE: NPM honore le chemin que vous avez spécifié via l' --prefixoption. Il se résout selon la documentation npm sur les dossiers , uniquement lorsqu'il npm installest utilisé sans l' --prefixoption.
Cela ne semble pas fonctionner, je reçois toujoursCan't install <current directory>: Missing package name
Tibor Blenessy
1
@TiborBlenessy En supposant que vous parlez de la deuxième déclaration d'installation. Veuillez vous assurer que vous disposez d'un fichier package.json valide dans votre répertoire actuel. Si cela ne fonctionne toujours pas, faites-moi savoir votre version npm. Ces étapes fonctionnaient avec la version npm spécifiée. Et s'ils ne le font plus, j'aimerais plonger profondément et aller à la cause profonde et peut-être que je peux trouver une alternative.
Rohit Sharma
1
@RohitSharma En utilisant npm 6.0.0, cette méthode ne fonctionne pas car elle attend le package.jsonfichier dans./install/here
Christian Ivicevic
@ChristianIvicevic Vous pouvez utiliser npm install --prefix ./install/here ./ pour installer le package.json dans le répertoire en cours vers le répertoire "./install/here". Il y a une chose que j'ai remarqué sur Mac: cela crée un lien symbolique vers le dossier parent dans le répertoire node_modules. Mais, cela fonctionne toujours avec npm 6.0.0
Rohit Sharma
1
@Tanoro La troisième commande fonctionnera avec npm 6.0.0 avec la création de liens symboliques comme mentionné dans la réponse. Je n'ai jamais essayé les 2 premières commandes avec npm v3.5.2, c'est pourquoi j'ai mentionné la version spécifique de npm avec laquelle j'avais essayé. N'hésitez pas à mettre à jour la réponse avec des commandes de travail pour d'autres versions également.
Rohit Sharma
0
J'utilise une version PowerShell et je n'ai pas pu exécuter npm sans changer le répertoire courant.
J'ai fini par utiliser la commande start et en spécifiant simplement le répertoire de travail:
Réponses:
Vous pouvez utiliser l'
--prefix
option:Le ou les packages seront ensuite installés dans
./install/here/node_modules
. Lemkdir
est nécessaire car npm pourrait sinon choisir unnode_modules
répertoire déjà existant plus haut dans la hiérarchie. (Voir la documentation npm sur les dossiers .)la source
npm install
(sans nom de package)? J'ai tiré cela directement, mais alors npm cherchepackage.json
dans le{prefix}
. Ce que je vise aussi, c'est de pouvoir laisser lepackages.json
dans la racine du projet et en même temps installer tous les packages dans{project root}/{project webroot}
.npm install
, mais cela--prefix
semble être une meilleure solution, si cela ne provoquait pas une récursivité.Dans la documentation, il est indiqué: Utilisez l'option préfixe avec l'option globale :
(Souligné par eux)
Donc, dans votre répertoire racine, vous pouvez installer avec
et il installera le
node_modules
dossier dans le dossierla source
require
installer les packages globalement, n'est-ce pas?Depuis la version 3.8.6 de npm, vous pouvez utiliser
à installer dans le répertoire spécifié. NPM crée automatiquement un
node_modules
dossier même lorsqu'unnode_modules
répertoire existe déjà dans la hiérarchie supérieure. Vous pouvez également avoir unpackage.json
dans le répertoire en cours, puis l'installer dans le répertoire spécifié en utilisant l'--prefix
option:Depuis npm 6.0.0, vous pouvez utiliser
pour installer le package.json dans le répertoire courant vers le répertoire "./install/here". Il y a une chose que j'ai remarqué sur Mac: cela crée un lien symbolique vers le dossier parent dans le répertoire node_modules. Mais cela fonctionne toujours.
REMARQUE: NPM honore le chemin que vous avez spécifié via l'
--prefix
option. Il se résout selon la documentation npm sur les dossiers , uniquement lorsqu'ilnpm install
est utilisé sans l'--prefix
option.la source
Can't install <current directory>: Missing package name
package.json
fichier dans./install/here
J'utilise une version PowerShell et je n'ai pas pu exécuter npm sans changer le répertoire courant.
J'ai fini par utiliser la commande start et en spécifiant simplement le répertoire de travail:
la source