[英]How to set env in package.json which is used within .bablerc
[英]How to resolve path in env variable in package.json?
在节点中,我想将process.env
上的START_DIR
设置为process.cwd()。
如何在脚本package.json
?
例如,我不能使用env文件。 这个应用程序不使用环境文件加载器,我不能改变它。
例如:
"scripts": {
"start": "set SOMEDIR=process.cwd() && node app",
....
console.log('res', process.env.START_DIR);
为了清楚process.env
, process.env
代表运行时Node进程的环境,因此,Node进程可见的任何环境变量都可以在模块中作为process.env.WHATEVER_VAR
进行访问。
为什么不从应用程序的代码中调用process.cwd()
? 它将返回执行node命令的路径,在本例中为npm start
。 了解更多您想要完成的事情会很有帮助,因为我不知道您为什么想要做我认为您想要做的事情。
如果您确实想完全按照您的描述进行操作,则可以使用node -e "console.log('something')"
将something
输出到shell。 从nbash shell npm start
运行npm start
时,它看起来是这样的,它位于要让process.cwd()
返回的目录中 。 (我不确定Windows是否等效):
"start": "export START_DIR=$(node -e \\"console.log(process.cwd());\\") && node app"
虽然还有其他选择。 您可以引用代表工作目录的操作系统内置变量。 看起来您可能正在使用Windows,所以该变量的名称为CD
。 我相信完整的命令将如下所示:
set SOMEDIR=%CD% && node app
或者,如果您是从bash shell(Linux和MacOS)开始的过程:
export SOMEDIR=$PWD && node app
您也可以使用process.env.CD
或process.env.PWD
直接在脚本中直接访问这些变量。
此方法的唯一危险是,它假定CD
/ PWD
尚未手动设置为其他值。 在Windows中,一种避免此问题的方法是在调用npm start
位置创建一个批处理文件。 在文件中,执行相同的命令,但将%CD%
替换为%~dp0
,这是指包含文件的路径。 然后将start
设置为Windows命令以执行文件,类似于call ./file.bat
。
同样,在bash环境中,创建一个shell脚本并使用$(dirname $0)
代替$PWD
。 使用chmod +x name_of_file
使它可执行,并将start
设置为bash ./name_of_file
。
最后一件事:如果变量的名称无关紧要, package.json
可以告诉npm创建以npm_config_
为前缀的环境变量。 有关更多信息,请参见npm config文档。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.