前端/移动开发面试题更新 2026-08-05

在 npm 中执行脚本命令时,为什么参数前需要加双横线(--)?

前端/移动开发技术原理npm

考察说明

考查对 npm 脚本参数传递机制的理解,特别是双横线的作用。

回答思路

  1. 【回答框架 1】npm 脚本是 package.json 中 scripts 字段定义的命令,通过 npm run 执行。当需要向脚本命令传递参数时,必须使用双横线 -- 分隔,因为 npm run 本身会解析后面的参数,如果不加 --,参数会被 npm 自身解析,而非传递给脚本。
  2. 【回答框架 2】双横线 -- 是 Unix 命令中的常见约定,表示参数结束,后续的内容不再被解析为选项,而是作为位置参数传递。在 npm 中,-- 之后的所有内容都会原样追加到脚本命令的末尾。
  3. 【回答框架 3】例如,npm run test -- --coverage 中,--coverage 会被追加到 test 脚本命令后,即实际执行 jest --coverage。如果不加 --,npm 可能会将 --coverage 解释为 npm run 的选项,导致错误或参数无法传递。
  4. 【回答框架 4】对于需要传递多个参数或包含空格的情况,双横线也能确保参数正确传递,避免被 npm 解析。此外,npm run 本身也支持 -- 来传递参数给 npm,但通常用于脚本参数传递。
  5. 【关键点 1】-- 分隔 npm 参数与脚本参数,确保参数原样传递给脚本。
  6. 【关键点 2】不加 -- 时,参数可能被 npm 解析,导致脚本无法收到。
  7. 【关键点 3】npm 脚本参数传递遵循 Unix 约定,-- 表示选项解析结束。
  8. 【易错点 1】不要将 -- 误用于 npm 自身选项,如 npm install --save 的 -- 是选项,不是分隔符。
  9. 【易错点 2】参数包含空格时,可能需要额外引号,否则可能被 shell 拆分。