【发布时间】:2017-05-29 14:43:29
【问题描述】:
我正在使用npm as a build tool,所以在我的package.json 中,我的一些脚本依赖于其他脚本:
{
"test": "npm run lint && mocha"
}
这会将npm 包管理器硬编码为package.json。如何使这种表达依赖关系的方法同时适用于npm 和yarn?
【问题讨论】:
我正在使用npm as a build tool,所以在我的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 都可以工作,并且会使用适当的构建工具。
【讨论】:
'$npm_execpath' is not recognized as an internal or external command 有谁知道如何让它在 Windows 上工作?说到那个操作系统,我有点一头雾水。
$npm_execpath 包含空格,如果您不使用双引号将变量括起来,事情可能会中断。例如"test": "\"$npm_execpath\" run lint && mocha"
%npm_execpath% 一起工作,但我还没有测试过。
虽然 mjs 的回答很棒,但还有一个小包据称可以在包括 Windows 在内的所有环境中工作:https://www.npmjs.com/package/yarpm
要在项目中使用,请运行 yarn add yarpm --dev / npm i -D yarpm,然后在脚本中使用 yarpm,如下所示:
{
"test": "yarpm run lint && mocha"
}
正如包自述文件所述,您只需要确保您的命令适合传递给 either yarn 或 npm:您不能使用仅适用于一个包管理器的参数/标志。
【讨论】: