web-dev-qa-db-fra.com

Comment npm installer dans un répertoire spécifié?

Est-il possible de spécifier un répertoire cible lors de l'exécution de npm install <package>?

213
coudy

Vous pouvez utiliser l'option --prefix:

mkdir -p ./install/here/node_modules
npm install --prefix ./install/here <package>

Le ou les paquetages seront ensuite installés dans ./install/here/node_modules. La mkdir est nécessaire car npm pourrait sinon choisir un répertoire node_modules déjà existant plus haut dans la hiérarchie. (Voir documentation de npm sur les dossiers .)

274
coudy

Dans la documentation c'est indiqué: Utilisez l'option de préfixe avec l'option globale :

Le préfixe par défaut est l'emplacement où le noeud est installé. Sur la plupart des systèmes, il s’agit de /usr/local . Sous Windows, il s'agit de l'emplacement exact du fichier binaire node.exe. Sur les systèmes Unix, le niveau est supérieur, car le noeud est généralement installé à {préfixe}/bin/noeud 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 va installer le dossier node_modules dans le dossier

<path/to/prefix_folder>/lib/node_modules
39
yunzen

A partir de 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 le dossier node_modules même lorsqu'un répertoire node_modules existe déjà dans la hiérarchie supérieure. Vous pouvez également avoir un package.json dans le répertoire actuel, puis l'installer dans le répertoire spécifié à l'aide de l'option --prefix:

npm install --prefix ./install/here

À partir de npm 6.0.0, vous pouvez utiliser

npm install --prefix ./install/here ./

installer le package.json dans le répertoire en cours dans le répertoire "./install/here". Il y a une chose que j'ai remarqué sur Mac qui crée un lien symbolique vers le dossier parent dans le répertoire node_modules. Mais ça fonctionne toujours.

REMARQUE: NPM respecte le chemin que vous avez spécifié via l'option --prefix. La résolution est conforme à documentation npm sur les dossiers , uniquement lorsque npm install est utilisé sans l'option --prefix.

33
Rohit Sharma