Wie kann ich npm in einem anderen Verzeichnis starten lassen?


291

Ich gehe normalerweise cdin das App-Verzeichnis und starte dann npm start.

Ich bin der Meinung, dass es eine Möglichkeit geben sollte, npm startmit einem Pfadparameter zu arbeiten. Die npm-Startdokumentation enthält jedoch keine solche Funktion.

Ich habe mich nur bemüht zu finden, npm start ./myappfunktioniert nicht. Gibt es eine Möglichkeit, das zu tun?

Antworten:


472

Dieser Einzeiler sollte funktionieren:

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

Entsprechender Doc


18
Funktioniert nicht. Es wird versucht, package.json im aktuellen Verzeichnis zu finden.
Shashwat Kumar

@ShashwatKumar hast du jemals einen funktionierenden Weg gefunden, dies zu tun?
Juicy

3
Ich habe gerade getestet, um diesen Befehl in einem Ordner mit einem auszuführen package.json, und npm hat den Anweisungen korrekt gefolgt path/to/your/app, um das richtige zu finden package.json. Welche Version von npm verwenden Sie?
Amaury Liet

3
Unter macOS10.14.x mit Node 10.x und npm 6.9.0 funktionierte der Einzeiler einwandfrei. Danke dir.
Tod


88

Unter dem Befehl projectbefindet sich ein Ordner, der eine package.jsonDatei enthält

npm run --prefix project ${COMMAND}

funktioniert auch. Nützlich in Docker-basierten Anwendungen.


21

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

& In package.json fügen Sie das folgende Skript hinzu

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

6
Können Sie erklären, was das Vorinstallationsskript bewirkt?
Junvar

Dies ist nicht plattformübergreifend. Es funktioniert nur unter Unix und nicht unter Odd-Balls wie Windows.
Jack Giffin

18

Ich bin von Google hierher gekommen, damit es für andere relevant sein kann: für yarnSie könnten verwenden:

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

6

Dieser Einzeiler sollte auch funktionieren:

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

Beachten Sie, dass das aktuelle Verzeichnis nach Ausführung dieses Befehls in / path / to / your / app geändert wird. So behalten Sie das Arbeitsverzeichnis bei:

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

Ich habe diese Lösung verwendet, weil eine Programmkonfigurationsdatei, die ich damals bearbeitete, die Angabe von Befehlszeilenargumenten nicht unterstützte.


2
Bitte fügen Sie bei Verwendung der Schaltfläche "-1" einen Kommentar hinzu, damit die Besucher eine Ahnung haben, "warum es nicht
Cyril CHAPON

6
Ich habe nicht abgelehnt. Aber ich glaube, dass es wegen der Nebenwirkungen herabgestimmt ist. Die Lösung ist nicht rein, sie ändert das aktuelle Verzeichnis.
Vladimir Serykh

Dies ist tatsächlich eine sehr häufige Lösung. Die einzige Verbesserung, die erzielt werden könnte, ist das Hinzufügen von Klammern, um die genannten Nebenwirkungen zu vermeiden. Die oben genannten Lösungen sind jedoch meiner Meinung nach besser, da sie sich ausschließlich auf NPM stützen.
Rafał Wrzeszcz

Sie können cd -am Ende hinzufügen , um die Nebenwirkung zu entfernen.
Babca

@babca es sei denn, es npm startschlägt fehl ... Sie müssen das in mehrere Aussagen aufteilen
Andreas

2

Gemäß dieser npm- Problemliste kann eine Problemumgehung über die npm-Konfiguration durchgeführt werden

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

Unter Fenstern scriptskönnte das sein{ start: "node ./%npm_package_config_path%" }

Führen Sie dann die Befehlszeile wie folgt aus

npm start --foo:path=myapp

Welches Skript kann für die heruntergeladenen Pakete verwendet werden? Angenommen, ich möchte über das heruntergeladene npm-Paket auf die js-Datei zugreifen
Hardik Rana
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.