运行 带有可选参数的 npm 脚本

Run npm script with optional params

我想要 运行 一个 npm 脚本,它接受可选的参数,并为未传递的参数的默认值提供回退,

例如:

我在 pacakge.json:

中定义了这个“示例”脚本
  "scripts": {
     "example": "echo input"
  },

我想传入"input"作为参数意思是:

如果我 运行 npm run example --input=true 那么它会输出 true

如果我 运行 npm run example 没有参数那么它会输出 false

我修改了 pacakge.json 以接受 input 参数:

  "scripts": {
     "example": "echo %npm_config_input%"
  },

现在当我 运行 npm run example --input=truenpm run example --input=false 我分别得到 'true' 或 'false',但是当我 运行 npm run example 时,我得到的结果是 %npm_config_input%.

我想给参数一个默认值,这样当它没有显式传递时 - 默认值将被使用,类似于:

  "scripts": {
     "example": "echo %npm_config_input% || 'false'"
  },

因此运行宁npm run example将导致'false'

这可能吗?

您可以使用 https://www.npmjs.com/package/@naholyr/cross-env 包来实现它,它支持变量的默认值。最重要的是,它将使您的脚本 OS-agnostic。方法如下:

"scripts": {
    "example": "cross-env INPUT=${npm_config_input:false} npm run _example",
    "_example": "cross-env command $INPUT"
},

出于我未知的原因,使用 echo 作为 command 打印变量值。但是我成功地将此模式用于 运行 sass 带有参数和回退值,如果没有传递参数的话。