![имеет ли значение, где в команде находится флаг?](https://rvso.com/image/178495/%D0%B8%D0%BC%D0%B5%D0%B5%D1%82%20%D0%BB%D0%B8%20%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5%2C%20%D0%B3%D0%B4%D0%B5%20%D0%B2%20%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%B5%20%D0%BD%D0%B0%D1%85%D0%BE%D0%B4%D0%B8%D1%82%D1%81%D1%8F%20%D1%84%D0%BB%D0%B0%D0%B3%3F.png)
Для установки пакета 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]
Больше ничего не говорится, поэтому все, что мы можем сделать, это то, что install
and <command>
должно стоять перед [args]
. [args]
Are expo-cli
and --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
Проверьте, установлены ли они оба глобально (держу пари, что так и есть).
Если вы хотите установить несколько пакетов, некоторые локальные, некоторые глобальные, то я бы посоветовал использовать безопасный подход и две отдельные команды, поскольку это не определено в документации, и поэтому поведение может измениться.