![ist es wichtig, wo in einem Befehl die Flagge erscheint?](https://rvso.com/image/178495/ist%20es%20wichtig%2C%20wo%20in%20einem%20Befehl%20die%20Flagge%20erscheint%3F.png)
Ich habe den folgenden Befehl verwendet, um das Expo CLI-Paket zu installieren:
sudo npm install expo-cli --global
Mit dem obigen Befehl lässt sich das Paket erfolgreich installieren. Ich frage mich jedoch, ob das Verschieben --global
vor dem Paketnamen genauso gut funktioniert wie mit dem obigen Befehl. Also mache ich stattdessen Folgendes:
sudo npm install --global expo-cli
Umgebung: Ubuntu 18.04.
Ich habe online nach einer Referenz gesucht, aber keine gefunden (obwohl es da draußen irgendwo eine geben muss).
Antwort1
DerManpage fürnpm(1)
zeigt an:
Synopsis npm <command> [args]
Viel mehr sagt es nicht aus, also können wir nur schlussfolgern, dass install
das <command>
und vor dem kommen müssen [args]
. Das [args]
sind expo-cli
und --global
.
Sehen wir uns den install
Befehl genauer an, um weitere Einzelheiten zu erfahren. npm-install(1)
sagt:
Synopsis ... npm install [<@scope>/]<name> ... aliases: npm i, npm add common options: [-P|--save-prod|-D|--save-dev|-O|--save-optional] [-E|--save-exact] [-B|--save-bundle] [--no-save] [--dry-run]
Es wird nichts über die Reihenfolge gesagt. Das lässt uns glauben, dass die Reihenfolge keine Rolle spielt. Wenn wir nach unten scrollen, sehen wir Dinge wie:
The --tag argument will apply to all of the specified install targets. The -g or --global argument will cause npm to install the package globally rather than locally. See npm help folders.
Ok... die Reihenfolge wird in der Manpage nie erwähnt, aber wir sehen, dass sie --tag
für alle Ziele gilt. Sie hielten es für wichtig, dies in der Manpage zu erwähnen, denn wenn jemand versucht, mehrere Pakete zu installieren und ein Tag anzugeben, könnte er annehmen, dass das --tag
Flag nur für das Paket davor oder danach gilt. Das ist nicht der Fall, Optionen gelten für alles. Wenn Optionen für alles gelten, dannReihenfolge ist wahrscheinlich nicht wichtig.
Beachten Sie, dass in allen auf der Manpage angegebenen Beispielen das Paket vor die Flagge gesetzt wird.
Du könntest es ausprobieren:
npm install sax --global expo-cli
Überprüfen Sie, ob beide global installiert sind (ich wette, das sind sie).
Wenn Sie mehrere Pakete installieren möchten, einige lokal, einige global, dann würde ich den sicheren Ansatz empfehlen und zwei separate Befehle verwenden, da dies nicht in der Dokumentation definiert ist und sich das Verhalten daher ändern könnte.