имеет ли значение, где в команде находится флаг?

имеет ли значение, где в команде находится флаг?

Для установки пакета Expo CLI я использовал следующую команду:

sudo npm install expo-cli --global

Команда выше успешно работает для установки этого пакета. Однако мне интересно, --globalбудет ли перемещение перед именем пакета работать так же, как и команда выше. Поэтому, вместо этого делаем следующее:

sudo npm install --global expo-cli

Среда: Ubuntu 18.04.

Я поискал в интернете ссылку на нее, но не нашел (хотя она где-то должна быть).

решение1

Theстраница руководства дляnpm(1)показывает:

 Synopsis
      npm <command> [args]

Больше ничего не говорится, поэтому все, что мы можем сделать, это то, что installand <command>должно стоять перед [args]. [args]Are expo-cliand --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

Проверьте, установлены ли они оба глобально (держу пари, что так и есть).

Если вы хотите установить несколько пакетов, некоторые локальные, некоторые глобальные, то я бы посоветовал использовать безопасный подход и две отдельные команды, поскольку это не определено в документации, и поэтому поведение может измениться.

Связанный контент