如何从包中设置一些环境变量。Json使用NPM启动像命令?
以下是我目前在package.json中的内容:
{
...
"scripts": {
"help": "tagove help",
"start": "tagove start"
}
...
}
我想在启动脚本中设置环境变量(如NODE_ENV),同时仍然能够用一个命令启动应用程序,npm start。
如何从包中设置一些环境变量。Json使用NPM启动像命令?
以下是我目前在package.json中的内容:
{
...
"scripts": {
"help": "tagove help",
"start": "tagove start"
}
...
}
我想在启动脚本中设置环境变量(如NODE_ENV),同时仍然能够用一个命令启动应用程序,npm start。
当前回答
从包中运行node.js脚本。带有多个环境变量的Json:
包中。json文件:
"脚本":{ "set NODE_ENV=prod4 && set LOCAL_RUN=true && node ./x.js", },
X.js文件可以是:
let env = process.env.NODE_ENV; let isLocal = process.env.LOCAL_RUN; console.log("ENV", ENV); console.log(“isLocal”,isLocal);
其他回答
我只是想在这里为未来的node探索者补充我的意见。在我的Ubuntu 14.04上,NODE_ENV=测试不起作用,我不得不使用export NODE_ENV=test,之后NODE_ENV=test也开始工作了,很奇怪。
在Windows上,正如前面所说,你必须使用set NODE_ENV=test,但对于跨平台解决方案,cross-env库似乎没有做到这一点,你真的需要一个库来做到这一点吗:
export NODE_ENV=test || set NODE_ENV=test&& yadda yadda
垂直条是需要的,否则Windows会在无法识别的导出NODE_ENV命令时崩溃。我不知道后面的空格,但为了确保我把它们也去掉了。
最优雅和便携的解决方案: package.json:
"scripts": {
"serve": "export NODE_PRESERVE_SYMLINKS_MAIN=1 && vue-cli-service serve"
},
在windows下创建导出。并把它放在你的%PATH%:
@echo off
set %*
当NODE_ENV环境变量被设置为“production”时,包中的所有devDependencies。当运行NPM install时,Json文件将被完全忽略。你也可以使用——production标志来强制执行:
npm install --production
要设置NODE_ENV,您可以使用这些方法中的任何一种
方法一:为所有节点应用设置NODE_ENV
窗口:
set NODE_ENV=production
Linux、macOS或其他基于unix的系统:
export NODE_ENV=production
这将为当前bash会话设置NODE_ENV,因此在此语句后启动的任何应用程序都将NODE_ENV设置为生产。
方法2:设置当前应用的NODE_ENV
NODE_ENV=production node app.js
这将仅为当前应用设置NODE_ENV。当我们想要在不同的环境中测试应用程序时,这很有帮助。
方法三:创建。env文件并使用
这使用了这里解释的想法。请参考这篇文章了解更详细的解释。
基本上,您创建一个.env文件,并运行一些bash脚本在环境上设置它们。
为了避免编写bash脚本,可以使用env-cmd包来加载.env文件中定义的环境变量。
env-cmd .env node app.js
方法四:使用跨环境包
这个包允许以一种方式为每个平台设置环境变量。
在用npm安装它之后,你可以把它添加到你的部署脚本中。Json格式如下:
"build:deploy": "cross-env NODE_ENV=production webpack"
这将在Windows控制台工作:
"scripts": {
"setAndStart": "set TMP=test&& node index.js",
"otherScriptCmd": "echo %TMP%"
}
运行aaa
输出: 测验
详情请看这个答案。
如果你:
目前正在使用Windows; 安装git bash; 不要在包中使用set ENV。json,这使得它只能在Windows开发机器上运行;
然后将node的脚本shell从cmd设置为git bash,并在package中编写linux风格的env设置语句。json使它能够在Windows/Linux/Mac上工作。
$ npm config set script-shell "C:\\Program Files\\git\\bin\\bash.exe"