npm - installer les dépendances pour un package dans un dossier différent?


142

J'ai la structure de répertoires suivante:

/some_project
    source.js
    package.json

Je voudrais installer les dépendances pour some_project. Je sais que je pourrais cd dans some_project puis exécuter npm install

Mais je me demandais si c'est possible sans changer de répertoire? Quelque chose comme

npm install some_project/package.json 

Réponses:


344

Vous pouvez utiliser la npm install <folder>variante avec l' --prefixoption. Dans votre scénario, le dossier et le préfixe seront les mêmes:

npm --prefix ./some_project install ./some_project

4
C'est la vraie réponse à la question. Merci @coudy.
G.Ghez

5
BTW, il crée un etcdossier vide dans la destination, c'est un bug connu github.com/npm/npm/pull/7249
Michael Radionov

8
Merci pour cette réponse. Y a-t-il plus de clarté quant à savoir si le deuxième ./some_projectest nécessaire?
Aron

12
le second ./some_projectn'est pas obligatoire
JRJurman

4
Cela ne semble pas fonctionner pour moi sur Windows 10. Il installe les dépendances dans le répertoire actuel et met simplement un lien symbolique dans le sous-dossier.
Herohtar

45

Mise à jour: puisque l' --prefixoption existe, je vote maintenant pour la réponse de @ coudy à cette question. Réponse originale ci-dessous:

Non, npmsera toujours installé dans le répertoire courant ou, avec -g, dans l'ensemble du système node_modules. Vous pouvez en quelque sorte accomplir cela avec un sous-shell, qui n'affectera pas votre répertoire actuel:

(cd some_project && npm install)

Les parenthèses le font fonctionner dans un sous - shell .


C'est finalement ce que j'ai fait - cd some_project && npm install. Merci
Florin

1
Existe-t-il un équivalent pour Windows?
Meligy

@Meligy vous pouvez utiliserSTART /D "%my_dir%" /I /WAIT npm install
Everspace

1

Sous Windows 10, je ne pouvais pas me rendre --prefixau travail, alors je devais l' cdexécuter.

cd PATH_TO_FOLDER && npm install 
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.