コマンド内でフラグがどこに表示されるかは重要ですか?

コマンド内でフラグがどこに表示されるかは重要ですか?

Expo CLI パッケージをインストールするために、次のコマンドを使用しています。

sudo npm install expo-cli --global

上記のコマンドは、そのパッケージのインストールに成功しました。ただし、パッケージ名の前に を移動しても、上記のコマンドと同様に機能するかどうか疑問に思っています--global。そのため、代わりに次のようにします。

sudo npm install --global expo-cli

環境: Ubuntu 18.04。

参考資料をオンラインで探しましたが、見つかりませんでした (どこかに必ずあるはずですが)。

答え1

マニュアルページnpm(1)表示:

 Synopsis
      npm <command> [args]

他にはあまり何も書かれていないので、installは であり<command>、 の前に来なければならないということしか推測できません[args]。 は[args]でありexpo-cli、です--global

installコマンドを調べて、さらに詳しい情報が得られるかどうか確認してみ ましょう。npm-install(1)言う:

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]

順序については何も書かれていません。順序は重要ではないと思わせてしまいます。下にスクロールすると、次のようなことが書かれています。

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.

わかりました...順序についてはマニュアルページでは触れられていませんが、--tagすべてのターゲットに適用されることがわかります。マニュアルページで言及することが重要だと感じたのは、複数のパッケージをインストールしてタグを指定しようとすると、フラグが--tag前または後のパッケージにのみ適用されると想定される可能性があるためです。そうではありません。オプションはすべてに適用されます。オプションがすべてに適用される場合、順序はおそらく重要ではない

マニュアル ページに示されているすべての例では、パッケージがフラグの前に置かれていることに注意してください。

試してみるのもいいでしょう:

npm install sax --global expo-cli

両方がグローバルにインストールされているかどうかを確認します (インストールされているはずです)。

ローカルパッケージとグローバルパッケージを含む複数のパッケージをインストールする場合は、ドキュメントで定義されていないため動作が変わる可能性があるため、安全な方法を採用して 2 つの別々のコマンドを使用することをお勧めします。

関連情報