如何创建可以使用默认值的可选参数的NPM脚本?

时间:2018-10-07 21:53:57

标签: bash npm npm-scripts

我正在尝试创建一个NPM脚本命令,该命令可以:

  • 在项目中的所有源文件上运行Prettier;或
  • 仅在作为参数给出的文件上运行Prettier。

也就是说,我想要

  • npm run prettier执行prettier --write '**/*.{js,ts}'
  • npm run prettier foo.ts执行prettier --write foo.ts

我已经弄清楚了如何使用shell插值来做到这一点,即

sh -c 'echo --write "${@:-default}"'输出default
sh -c 'echo --write "${@:-default}"' -- value输出value

这似乎很近。

但是当我尝试定义如下NPM脚本时:

"scripts": {
    "prettier": "sh -c 'exec prettier --write \"${@:-'**/*.{js,ts}'}\"' --"
}

并使用npm run prettier foo.js运行它,它会爆炸:

[error] No matching files. Patterns tried: babel.config.js} !**/node_modules/** ...

也就是说,出于某种未知原因,我想要的文件名中添加了一个杂散的大括号。

现在,我知道我可以通过针对这两种情况使用两个脚本来解决此问题,我对找出此处发生的问题更感兴趣。

0 个答案:

没有答案