package.json 适用于 npm 和 yarn 的脚本?

package.json scripts that work with npm and yarn?

我正在使用 npm as a build tool,所以在我的 package.json 中,我的一些脚本依赖于其他脚本:

{
  "test": "npm run lint && mocha"
}

这会将 npm 包管理器硬编码到 package.json 中。如何使这种表达依赖关系的方法同时适用于 npmyarn

$npm_execpath 环境变量指的是构建工具,所以只需将 npm 替换为 $npm_execpath:

{
  "test": "$npm_execpath run lint && mocha"
}

npm testyarn test 都可以工作,并且会使用适当的构建工具。

虽然 mjs 的回答很好,但还有一个小包据称适用于所有环境,包括 Windows:https://www.npmjs.com/package/yarpm

要在项目中使用,运行 yarn add yarpm --dev / npm i -D yarpm 然后像这样在脚本中使用 yarpm:

{
  "test": "yarpm run lint && mocha"
}

正如包 README 所指出的,您只需要确保您的命令适合传递给 yarn 或 npm:您不能使用 arguments/flags只能在一个包管理器上工作。