使用npm和yarn的package.json脚本?

mjs*_*mjs 11 node.js npm yarnpkg

我使用npm作为构建工具,所以在我的package.json,我的一些脚本依赖于其他脚本:

{
  "test": "npm run lint && mocha"
}
Run Code Online (Sandbox Code Playgroud)

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

mjs*_*mjs 23

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

{
  "test": "$npm_execpath run lint && mocha"
}
Run Code Online (Sandbox Code Playgroud)

双方npm testyarn test会工作,将使用相应的构建工具.

  • 这对我来说非常有用,直到我不得不在工作的Windows机器上工作.我得到错误''$ npm_execpath'不被识别为内部或外部命令`有没有人知道如何让它在Windows上工作?对于那个操作系统,我有点无能为力. (3认同)
  • 如果`$ npm_execpath`包含空格,如果不用双引号括起变量,事情可能会中断.例如``test':"\"$ npm_execpath \"run lint && mocha"` (3认同)
  • Windows可能会使用%npm_execpath%来代替,但我尚未对其进行测试。 (2认同)

Tim*_*one 7

虽然mjs的答案很好,但据称还有一个小软件包可以在包括Windows在内的所有环境下工作:https : //www.npmjs.com/package/yarpm

要在项目中使用,请运行yarn add yarpm --dev/ npm i -D yarpm,然后在脚本中使用yarpm,如下所示:

{
  "test": "yarpm run lint && mocha"
}
Run Code Online (Sandbox Code Playgroud)

由于包自述文件说明,你只需要确保你的命令,将适合于通过传递给无论是纱线或NPM:不能使用参数/标志,只有在一个包管理工作。