将多个变量传递给package.json脚本

时间:2018-04-27 13:58:29

标签: node.js npm environment-variables npm-scripts

我有 package.json (不是BASH,不是SH,不是ZSHELL,不是鱼)。

所以在我们确定这是我的 package.json 文件之后,让我把它呈现给你:

的package.json

/loadpage

我想在上面的文件中添加更多变量(例如DECLARE @TimeCheck AS VARCHAR(50) SET @TimeCheck = '17:30' DECLARE @HourOfTime AS INT DECLARE @MinuteOfTime AS INT SET @MinuteOfTime = RIGHT(@TimeCheck, 2) SET @HourOfTime = LEFT(@TimeCheck, 2) SELECT @HourOfTime, @MinuteOfTime -- here if the minutes between 0 and 20 then dont add anything, if it is 30 and 59 add 1 to the hours. -- if you need more options or need to change the logic you can add more WHEN statements or change the numbers for the between SET @HourOfTime += CASE WHEN @MinuteOfTime BETWEEN 0 AND 29 THEN 0 WHEN @MinuteOfTime BETWEEN 30 AND 59 THEN 1 END SELECT CAST(@HourOfTime AS VARCHAR(30)) + ':00' -- since rounding this will just be hard coded to 00 ),这是我的 package.json 文件。我该怎么做(在我的package.json文件中添加更多变量)?

让我明确一点,我不想阅读bash或zshell,fish或sh的联合帮助页。这就是为什么我把问题放在这里并且没有阅读联机帮助页 - 否则我不会把它放在这里并且会阅读该联机帮助页。谢谢你的理解。

2 个答案:

答案 0 :(得分:3)

您的脚本应该是:

"dev": "NODE_ENV=myValue MYVAR=myOtherValue myProgram"

因为你可以在空间分隔的情况下使用多个环境。这源于bash这样的终端的常见行为,你可以在其中设置多个env变量:

FOO1=baz FOO2=fnord FOO3=baz env | grep FOO
FOO1=baz
FOO2=fnord
FOO3=baz

答案 1 :(得分:0)

我与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: 跨环境NODE_ENV =生产我的命令

答案在这里: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]