【问题标题】:What does the `-s --` flag do for npm?`-s --` 标志对 npm 有什么作用?
【发布时间】:2019-07-05 22:48:28
【问题描述】:

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

他对yarnnpm 使用以下别名:

## 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 -- 标志有什么作用?肯特没有在视频中解释它,我在旗帜上找不到任何info

【问题讨论】:

标签: bash npm yarnpkg flags npm-scripts


【解决方案1】:

选项-s 使yarn 不在标准输出上输出任何内容,即。让它沉默。

-- 来自posix utility conventions,在命令行 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.

所以:

> printf "%s" -n
-n

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

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

允许传递-n,即。选项以 - 开头作为 printf 的第一个参数,可以使用 --:

> printf -- -n
-n

所以:

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

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

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

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

【讨论】:

  • 大写 S 怎么样?有区别吗?
  • @ZakherMasri 大写S呢?比较什么和什么的区别?
  • 大写的 S 到小写的 s(-s vs -S)。它甚至区分大小写吗?
【解决方案2】:

-s 等价于--silent

-- 是常见的 Unix 约定,表示选项的结束。之后,即使参数看起来像一个选项,它也会被视为位置参数。

【讨论】:

    【解决方案3】:

    表示命令选项的结束。因此,您不能在双破折号后使用命令选项(例如-s)。但是,例如,您可以列出要通过命令处理的文件。

    Explained here

    -s 选项本身与 --loglevel=silent 等效,后者会禁用日志输出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-10
      • 2011-09-01
      相关资源
      最近更新 更多