Réponses:
Vous pouvez utiliser l' --prefixoption:
mkdir -p ./install/here/node_modules
npm install --prefix ./install/here <package>
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 .)
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}.
npm install, mais cela --prefixsemble ê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 :
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
<path/to/prefix_folder>/lib/node_modules
requireinstaller les packages globalement, n'est-ce pas?
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.
Can't install <current directory>: Missing package name
package.jsonfichier dans./install/here