繁体   English   中英

如何解析package.json中的env变量中的路径?

[英]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.envprocess.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.CDprocess.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM