Comment puis-je faire démarrer npm dans un répertoire différent?


293

Je passe généralement cddans le répertoire de l'application, puis je cours npm start.

J'ai le sentiment qu'il devrait y avoir un moyen de fonctionner npm startavec un paramètre de chemin. Mais, la documentation de démarrage de npm ne contient pas une telle fonctionnalité.

Je me suis essayé seulement pour trouver que npm start ./myappça ne marche pas. Y-a-t-il un moyen de faire ça?

Réponses:


475

Cette doublure devrait fonctionner:

npm start --prefix path/to/your/app

Doc correspondant


18
Ca ne fonctionne pas. Essayer de trouver package.json dans le répertoire courant.
— Shashwat Kumar

@ShashwatKumar avez-vous déjà trouvé un moyen de faire cela?
— Juicy

3
Je viens de tester pour exécuter cette commande dans un dossier contenant également un package.json, et npm a correctement suivi le path/to/your/apppour trouver le bon package.json. Quelle version de npm utilisez-vous?
— Amaury Liet

3
Fonctionnant sur macOS10.14.x avec le nœud 10.x et npm 6.9.0, le one-liner fonctionnait parfaitement. Je vous remercie.
— Tod

3
Documents pour --prefixici: docs.npmjs.com/misc/config#prefix
— lealceldeiro

88

Sous la commande, où se projecttrouve un dossier contenant le package.jsonfichier

npm run --prefix project ${COMMAND}

fonctionne également. Utile dans les applications basées sur Docker.


21

npm start --prefix path/to/your/app

& inside package.json ajoutez le script suivant

"scripts": {
   "preinstall":"cd $(pwd)"
}

6
Pouvez-vous expliquer ce que fait le script de préinstallation?
— junvar

Ce n'est pas multiplateforme. Cela ne fonctionne que sur Unix et non sur des boules impaires comme Windows.
— Jack Giffin

18

Je suis venu ici de Google, donc cela pourrait être pertinent pour les autres: car yarnvous pouvez utiliser:

yarn --cwd /path/to/your/app run start 

6

Cette doublure devrait également fonctionner:

(cd /path/to/your/app && npm start)

Notez que le répertoire actuel sera changé en / chemin / vers / votre / app après avoir exécuté cette commande. Pour conserver le répertoire de travail:

(cd /path/to/your/app && npm start && cd -)

J'ai utilisé cette solution car un fichier de configuration de programme que je modifiais à l'époque ne prenait pas en charge la spécification des arguments de ligne de commande.


2
S'il vous plaît lorsque vous utilisez le bouton "-1", ajoutez un commentaire afin que les visiteurs aient une idée "pourquoi ce n'est pas ok" ...
— Cyril CHAPON

6
Je n'ai pas downvote. Mais je crois que c'est sous-estimé en raison des effets secondaires. La solution n'est pas pure, elle change le répertoire courant.
— Vladimir Serykh

Il s'agit en fait d'une solution très courante, la seule amélioration qui serait faite serait d'ajouter des parenthèses pour éviter les effets secondaires mentionnés. Cependant, les solutions ci-dessus sont meilleures à mon avis, car elles reposent uniquement sur NPM.
— Rafał Wrzeszcz

Vous pouvez ajouter cd -à la fin pour supprimer l'effet secondaire.
— babca

@babca sauf en cas d' npm startéchec ... vous devez diviser cela en plusieurs déclarations
— Andreas

2

Selon cette liste de problèmes npm , une solution de contournement pourrait être effectuée via la configuration npm

name: 'foo'
config: { path: "baz" },
scripts: { start: "node ./$npm_package_config_path" }

Sous Windows, le scriptspourrait être{ start: "node ./%npm_package_config_path%" }

Exécutez ensuite la ligne de commande comme ci-dessous

npm start --foo:path=myapp

quel script pourrait faire pour les packages téléchargés? Supposons que je souhaite accéder au fichier js à partir du package npm téléchargé
— Hardik Rana
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.