# 三.npm 的参数

前言

给 npm script 传递参数以减少重复的 npm script,增加注释提高 npm script 脚本的可读性,控制运行时日志输出能让你专注在重要信息上

# 1.传递参数

eslint 代码检查和格代码修复配置:





 



// package.json
{
  "scripts": {
    "lint:js": "eslint *.js",
    "lint:js:fix": "eslint *.js --fix"
  }
}
1
2
3
4
5
6
7

改进上述命令,复用基础命令:





 



// package.json
{
  "scripts": {
    "lint:js": "eslint *.js",
    "lint:js:fix": "npm run lint:js -- --fix"
  }
}
1
2
3
4
5
6
7

要格外注意 --fix 参数前面的 -- 分隔符,意指要给 npm run lint:js 实际指向的命令传递额外的参数。

注意

如果你不想单独声明 lint:js:fix 命令,在需要的时候直接运行: npm run lint:js -- --fix 来实现同样的效果。

同理可以给 mocha 命令增加 --watch 模式方便在开发时立即看到测试结果

# 2.添加注释

  • //


 




{
  "scripts": {
    "//": "运行所有代码检查和单元测试",
    "test": "npm-run-all --parallel lint:* mocha"
  }
}
1
2
3
4
5
6
  • 在命令前面加上注释


 



{
  "scripts": {
    "test": "# 运行所有代码检查和单元测试 \n    npm-run-all --parallel lint:* mocha"
  }
}
1
2
3
4
5

注意注释后面的换行符 \n 和多余的空格,换行符是用于将注释和命令分隔开,这样命令就相当于微型的 shell 脚本,多余的空格是为了控制缩进,也可以用制表符 \t 替代。这种做法能让 npm run 列出来的命令更美观,但是 scripts 声明阅读起来不那么整齐美观。

# 3.日志输出

在运行 npm script 出现问题时你需要有能力去调试它,某些情况下你需要让 npm script 以静默的方式运行,这类需求可通过控制运行时日志输出级别来实现。

日志级别控制参数有好几个,简单举例如下:

# 3.1 默认日志

即不加任何日志控制参数得到的输出,可能是你最常用的,能看到执行的命令、命令执行的结果。

# 3.2 尽可能少

结合其他工具调用 npm script 的时候比较有用,需要使用 --loglevel silent,或者 --silent,或者更简单的 -s 来控制,这个日志级别的输出实例如下(只有命令本身的输出,读起来非常的简洁)

如果执行各种 lint script 的时候启用了 -s 配置,代码都符合规范的话,你不会看到任何输出,这就是没有消息是最好的消息的由来,哈哈!

# 3.3 尽可能多

排查脚本问题的时候比较有用,需要使用 --loglevel verbose,或者 --verbose,或者更简单的 -d 来控制,这个日志级别的输出实例如下(详细打印出了每个步骤的参数、返回值,下面的截图只是部分):