`-s --` 标志对 npm 有什么作用?

J. *_*ers 2 bash flags npm npm-scripts yarnpkg

我刚刚看了Kent C. Dodds的视频,他解释了他的.bash_profile.

他为yarnand使用以下别名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"
Run Code Online (Sandbox Code Playgroud)

我想知道,-s --国旗有什么作用?肯特没有在视频中解释它,我在旗帜上找不到任何信息

Kam*_*Cuk 5

选项-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.
Run Code Online (Sandbox Code Playgroud)

所以:

> printf "%s" -n
-n
Run Code Online (Sandbox Code Playgroud)

一切正常,它会打印-n。但:

> printf -n
bash: printf: -n: invalid option
printf: usage: printf [-v var] format [arguments]
Run Code Online (Sandbox Code Playgroud)

允许通过-n,即。选项-以前导作为 printf 的第一个参数开始,可以使用--

> printf -- -n
-n
Run Code Online (Sandbox Code Playgroud)

所以:

alias yas="yarn run start -s";
yas -package
Run Code Online (Sandbox Code Playgroud)

将通过纱线抛出未知选项,因为它会尝试解析-p为选项。正在做:

alias yas="yarn run start -s --";
yas -package 
Run Code Online (Sandbox Code Playgroud)

将抛出未知包,yarn因为没有名为 的包-package。通过使用--作者有效地阻止用户(他自己)将任何附加选项传递给纱线,因为所有以下参数将仅被解释为包名称。