【问题标题】:How can I use an environment variable in a npm script on windows?如何在 Windows 上的 npm 脚本中使用环境变量?
【发布时间】:2017-11-30 16:37:45
【问题描述】:

在我的package.json 文件中,我有一个这样定义的脚本:

"scripts": {
    "start": "webpack-dev-server --open --config webpack.dev.js"
}

我想将我的主机名传递给它,这是一个名为 HOSTNAME 的 Windows 环境变量。我尝试了以下解决方案,但似乎都没有工作:

"start": "webpack-dev-server --open --config webpack.dev.js --host HOSTNAME"

"start": "webpack-dev-server --open --config webpack.dev.js --host %HOSTNAME%"

我错过了什么?

【问题讨论】:

  • %HOSTNAME% 对我来说效果很好。
  • 如果我在 cmd 中只键入 HOSTNAME 它可以工作,但不能通过脚本或使用 % :(
  • 我做测试时做错了。我使用set HOSTNAME=asdf 手动设置了主机名变量,它覆盖了主机名工具。请参阅下面的答案。

标签: node.js npm environment-variables


【解决方案1】:

Windows 上的正确语法是%envvariable%。它对您不起作用,因为hostname 是一个输出主机名的应用程序 (hostname.exe),而不是环境变量。一种解决方案是改用变量COMPUTERNAME

"start": "webpack-dev-server --open --config webpack.dev.js --host %COMPUTERNAME%"

根据documentation主机名工具

显示计算机的完整计算机名称的主机名部分。

所以COMPUTERNAME 可能无法完全显示您想要的内容,但我会试一试。有一些关于COMPUTERNAMEhere的信息。

我尝试了一些巧妙的技巧,例如将 hostname.exe 的输出存储在一个新的环境变量中:

"start": "hostname > host.txt && set /P HOST= < host.txt && webpack-dev-server --open --config webpack.dev.js --host %HOST%"
"start": "for /f %i in ('hostname') do set HOST=%i && webpack-dev-server --open --config webpack.dev.js --host %HOST%"

我无法让它工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-22
    • 2016-01-24
    • 2016-03-01
    • 2018-12-03
    • 2022-09-23
    • 1970-01-01
    • 1970-01-01
    • 2021-06-28
    相关资源
    最近更新 更多