Что делает флаг `-s --` для npm?

Я только что посмотрел видео Кента Доддса, в котором он объясняет свою .bash_profile.

Он использует следующие псевдонимы для yarn и npm:

## npm aliases
alias ni="npm install";
alias nrs="npm run start -s --";
alias nrb="npm run build -s --";
alias nrd="npm run dev -s --";
alias nrt="npm run test -s --";
alias nrtw="npm run test:watch -s --";
alias nrv="npm run validate -s --";
alias rmn="rm -rf node_modules";
alias flush-npm="rm -rf node_modules && npm i && say NPM is done";
alias nicache="npm install --prefer-offline";
alias nioff="npm install --offline";

## yarn aliases
alias yar="yarn run";
alias yas="yarn run start -s --";
alias yab="yarn run build -s --";
alias yat="yarn run test -s --";
alias yav="yarn run validate -s --";
alias yoff="yarn add --offline";
alias ypm="echo \"Installing deps without lockfile and ignoring engines\" && yarn install --no-lockfile --ignore-engines"

Мне было интересно, что делает флаг -s --? Кент не объясняет это в видео, и я не смог найти никакой информации о флаге( с).


person J. Hesters    schedule 12.02.2019    source источник
comment
Это два флага. По соглашению -s является сокращением для --silent. -- — это только конец аргументов для run и начало аргументов для всего, что вы запускаете. См. docs.npmjs.com/cli/run-script.html (не документы по установке, для которых это не используется).   -  person jonrsharpe    schedule 12.02.2019
comment
Также stackoverflow.com/q/41383247/3001761   -  person jonrsharpe    schedule 12.02.2019


Ответы (3)


Опция -s заставляет yarn ничего не выводить на стандартный вывод, т.е. заставляет его замолчать.

-- взято из соглашений об утилитах posix и очень распространено в командной строке Linux. инструменты:

Guideline 10:
The first -- argument that is not an option-argument should be accepted as a delimiter indicating the end of options. Any following arguments should be treated as operands, even if they begin with the '-' character.

So:

> printf "%s" -n
-n

Все в порядке, он напечатает -n. Но:

> printf -n
bash: printf: -n: invalid option
printf: usage: printf [-v var] format [arguments]

Чтобы разрешить прохождение -n, т.е. вариант, начинающийся с - в качестве первого аргумента для printf, можно использовать --:

> printf -- -n
-n

So:

alias yas="yarn run start -s";
yas -package

выдаст неизвестную опцию по пряже, так как попытается проанализировать -p как опцию. Делает:

alias yas="yarn run start -s --";
yas -package 

выдаст неизвестный пакет yarn, так как нет пакета с именем -package. Используя --, автор эффективно блокирует пользователя (самого себя) от передачи каких-либо дополнительных параметров в yarn, поскольку все последующие аргументы будут интерпретироваться только как имена пакетов.

person KamilCuk    schedule 12.02.2019
comment
А как же заглавная S? Есть ли разница? - person Zakher Masri; 24.07.2019
comment
@ZakherMasri А как насчет заглавной буквы S? Разница в сравнении чего с чем? - person KamilCuk; 24.07.2019
comment
Заглавная S в маленькую s (-s против -S). Это даже чувствительно к регистру? - person Zakher Masri; 24.07.2019

-s эквивалентно --silent.

-- — общепринятое соглашение Unix, обозначающее конец опций. После этого, даже если аргумент выглядит как опция, он будет считаться позиционным аргументом.

person Amadan    schedule 12.02.2019

Это означает конец опций команды. Поэтому вы не можете использовать параметры команды (например, -s) после двойного дефиса. Однако вы можете, например, составить список файлов для обработки по команде.

Объяснение здесь

Сам параметр -s является кратким эквивалентом --loglevel=silent, который отключает вывод журнала.

person A. Albershteyn    schedule 12.02.2019