将多个变量传递给 package.json 脚本
Posted
技术标签:
【中文标题】将多个变量传递给 package.json 脚本【英文标题】:Pass more than one variable to a package.json script 【发布时间】:2018-10-08 09:27:54 【问题描述】:我在 package.json 中有(不是 BASH,不是 SH,不是 ZSHELL,不是 FISH)。
所以在我们确定这是我的 package.json 文件这一事实之后,让我将它呈现给您:
package.json
"scripts":
"dev": "NODE_ENV=myValue myProgram"
我想在上面的文件中添加更多变量(例如MYVAR=myOtherValue
),这是我的 package.json 文件。我该怎么做(向我的 package.json 文件添加更多变量)?
让我明确一点,我不想阅读 bash 或 zshell、fish 或 sh 的联机帮助页。这就是为什么我把问题放在这里但没有阅读手册页的原因——否则我不会把它放在这里,而是会阅读手册页。感谢您的理解。
【问题讨论】:
空格分隔例如NODE_ENV=myValue MYVAR=myOtherValue myProgram
见***.com/questions/26189662/…
How set multiple env variables for a bash command的可能重复
它不是重复的。我在问 nodeJs 和 package.json。从开发人员的角度来看(假设我使用 Windows),这与 bash 完全无关。 (相信我,我们有 99% 的 Windows 开发人员在他们的一生中从未听说过 bash,不需要也不想)
请不要将答案缩减为只包含一个单行。提供附加信息是为了呈现上下文。
我没有问过 bash
【参考方案1】:
你的脚本应该是:
"dev": "NODE_ENV=myValue MYVAR=myOtherValue myProgram"
因为您可以在空格分隔时添加多个环境变量。
这源于 bash 等终端的常见行为,您可以在其中动态设置多个环境变量:
FOO1=baz FOO2=fnord FOO3=baz env | grep FOO
FOO1=baz
FOO2=fnord
FOO3=baz
【讨论】:
我不关心这个问题中的 gnu 工具 bash 或 grep。 @nottinhill 公平点,但它有助于理解为什么这种方法有效。【参考方案2】:我和 Stevek 一起讨论这个问题,我阅读了答案(重复的答案)并且对 bash 的引用感到沮丧。我在使用 Powershell 的 Windows 系统上。我想传递多个环境变量并让它在使用 Powershell 的 Windows 系统中工作。除非启用跨系统使用,否则对 *nix 命令等的任何引用都是在搅浑水。
到目前为止,这个答案还没有回答。所以将添加我发现的内容
这个问题告诉你如何传递 1 个变量。 How to set environment variables from within package.json
"start": "set NODE_ENV=YOURENV&&node start.js"
现在如何传递超过1?这仍然是个问题。
有人告诉我使用 cross-env 是最好的: cross-env NODE_ENV=production my-command
这里给出了答案:https://github.com/kentcdodds/cross-env/issues/15
"scripts":
"debug": "cross-env NODE_PATH=. DEBUG=app:* nodemon bootload.js"
但是,cross-env 不使用 PowerShell,而是在 windows 上贬低了 cmd shell。所以回到主要问题。 [除非你做出这个改变https://github.com/kentcdodds/cross-env/issues/192#issuecomment-513341729]
【讨论】:
以上是关于将多个变量传递给 package.json 脚本的主要内容,如果未能解决你的问题,请参考以下文章
如何传递参数并将这些参数用作 package.json 脚本中的变量? [复制]