gpt4 book ai didi

powershell - 将值从 cmd 传递到 npm 脚本

转载 作者:行者123 更新时间:2023-12-02 23:33:16 25 4
gpt4 key购买 nike

我搜索了好几天,但没有找到解决我的问题的答案。

我想在 Windows 中通过 cmd 或 Powershell 运行 npm 脚本并传递脚本变量的值。我想要 package.json 中的波纹管脚本:

"scripts": {
"happy-birthday": "echo Happy birthday $NAME and many returns!"
}

输出:

生日快乐,Danny 和许多返回!

使用如下命令:

npm run happy-birthday --NAME=Danny

到目前为止我测试的一切都给我:

生日快乐 $NAME 和许多返回!

感觉npm没把this当成变量,当成字符串打印出来。我还测试了 %NAME%。

Npm 版本 - 6.12.1

最佳答案

你不能将参数传递到 npm 脚本的中间,参数只能传递到它们的末尾。看我的回答here进一步解释。

根据您的示例,考虑以下将在所有平台上成功运行的解决方案:

  1. 在您的 package.json 文件中定义您的 happy-birthday npm 脚本如下:

    "scripts": {
    "happy-birthday": "node -e \"console.log('Happy birthday %s and many returns!', process.argv[1] || 'Jane')\""
    }
  2. 然后通过 cmdPowershell(或任何其他命令行工具)运行以下命令。

    npm run happy-birthday -- Danny

    这将打印:

    Happy birthday Danny and many returns!

    注意:如果您只是运行以下命令,即不传递参数:

    npm run happy-birthday

    它将打印默认名称:

    Happy birthday Jane and many returns!


解释:

  • npm 脚本使用 nodejs 命令行选项 -e评估内联 JavaScript,如下所示:

    console.log('Happy birthday %s and many returns!', process.argv[1] || 'Jane')
  • 通过 CLI 传递的参数,例如Danny,使用 process.argv 读取- 由此我们在索引 1 处引用数组元素。

  • Logical OR Operator , IE。 || 用于在没有传递参数时返回Jane


编辑:改为设置环境变量

或者,您可能需要考虑设置一个环境变量并在您的 npm 脚本中引用它。

  1. 在你的 npm 脚本中定义你的 happy-birthday npm 脚本如下:

    "happy-birthday": "echo Happy birthday %NAME% and many returns!"

    注意 Windows 使用的%NAME% 符号仅用于引用变量。

  2. 使用命令

    使用 cmd(即 命令提示符)时,您需要运行以下命令:

    set NAME=Danny&& npm run happy-birthday

    使用 Powershell

    使用 Powershell 时,您需要运行以下命令:

    $env:NAME="Danny" ; npm run happy-birthday

注意: npm 用于 npm 脚本的默认 shell 在 *nix 上是 sh ,在 *nix 上是 cmd window 。因此,上述步骤 1 和 2 中定义的方法在 *nix 平台上将失败。

如果跨平台支持是必需的,并且您确实希望采用这种设置环境变量并通过 npm 脚本引用它们的方法,那么请考虑使用 cross-env包。

关于powershell - 将值从 cmd 传递到 npm 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61454269/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com