我使用 npm 作为构建工具,所以在我的
package.json
中,我的一些脚本依赖于其他脚本:
{
"test": "npm run lint && mocha"
}
这会将
npm
包管理器硬编码到 package.json
中。如何使这种表达依赖关系的方法同时适用于 npm
和 yarn
?
环境变量
$npm_execpath
指的是构建工具,因此只需将 npm
替换为 $npm_execpath
:
{
"test": "$npm_execpath run lint && mocha"
}
npm test
和yarn test
都可以工作,并且将使用适当的构建工具。
注意! 这不适用于 Windows 机器。
虽然 mjs 的答案很棒,但还有一个小软件包据称可以在包括 Windows 在内的所有环境上工作:https://www.npmjs.com/package/yarpm
要在项目中使用,请运行
yarn add yarpm --dev
/ npm i -D yarpm
,然后在脚本中使用 yarpm,如下所示:
{
"test": "yarpm run lint && mocha"
}
正如包自述文件所指出的,您只需要确保您的命令适合传递到yarn或npm:您不能使用仅适用于一个包管理器的参数/标志。