【问题标题】:package.json scripts that work with npm and yarn?与 npm 和 yarn 一起使用的 package.json 脚本?
【发布时间】:2017-05-29 14:43:29
【问题描述】:

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

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

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

【问题讨论】:

    标签: node.js npm yarnpkg


    【解决方案1】:

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

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

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

    【讨论】:

    • 这对我来说一直很好,直到我不得不在工作中使用 Windows 机器。我在哪里得到错误'$npm_execpath' is not recognized as an internal or external command 有谁知道如何让它在 Windows 上工作?说到那个操作系统,我有点一头雾水。
    • @rgb 呃,你可能在 Windows 上不走运,我不知道那里的情况如何。
    • 如果$npm_execpath 包含空格,如果您不使用双引号将变量括起来,事情可能会中断。例如"test": "\"$npm_execpath\" run lint && mocha"
    • Windows 可能与 %npm_execpath% 一起工作,但我还没有测试过。
    【解决方案2】:

    虽然 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:您不能使用仅适用于一个包管理器的参数/标志。

    【讨论】:

    • 很好的建议。 yarpm 当前不受支持,yarn-or-npm 是最近的替代方案。
    猜你喜欢
    • 1970-01-01
    • 2023-04-08
    • 2014-06-26
    • 2021-07-04
    • 2018-09-04
    • 2016-12-05
    • 2020-07-27
    • 2020-06-13
    相关资源
    最近更新 更多