ist es wichtig, wo in einem Befehl die Flagge erscheint?

ist es wichtig, wo in einem Befehl die Flagge erscheint?

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 --globalvor 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 installdas <command>und vor dem kommen müssen [args]. Das [args]sind expo-cliund --global.

Sehen wir uns den installBefehl 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 --tagfü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 --tagFlag 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.

verwandte Informationen