我的package.json中有一些script
-条目。
要通过Fastlane将应用程序部署到应用程序商店,我需要为APPLE_ID或google-services的JSON文件设置环境变量。
此设置是针对每个用户(可能是针对每个项目)的。
我知道,如何通过package.json添加硬编码的ENV变量:
"ANDROID_closedBeta": "FASTLANE_JSON_KEY_FILE=`find $(pwd) -name release_manager.json` bundle exec fastlane android deploy_closedBeta",
但是那并不能解决我的问题。我创建了一个文件: ios_env 和 linux_env ,该文件会导出一些敏感的凭据。
如果我运行source linux_env
,将设置变量,并且可以通过CLI命令运行fastlane android deploy_closedBeta
但是,如果我尝试通过yarn或npm运行它,则找不到该ENV。 因此,我尝试在falstlane-command之前运行source,但是也没有用:
"ANDROID_closedBeta": "`source ./linux_env` FASTLANE_JSON_KEY_FILE=`find $(pwd) -name release_manager.json` bundle exec fastlane android deploy_closedBeta",
我如何获取package.json-script来识别我的环境变量,而无需将其硬编码到package.json中?
答案 0 :(得分:0)
我发现了一个丑陋的解决方法...但是如果有人可以向我展示一种更好的方法来实现这一点,我将感到很高兴:
在package.json中,我声明了两个设置。一个具有需要仍然接收到的ENV变量的主脚本的脚本,以及一个首先加载环境然后在此环境中运行main脚本任务的脚本条目。
很难解释,容易展示...看一下:
"scripts": {
...
"IOS_internalTest": "source ./fastlane/ios_env && IOS_DEPLOY_TYPE=deploy_internalTest npm run IOS_runDeployment",
"IOS_betaTest": "source ./fastlane/ios_env && IOS_DEPLOY_TYPE=deploy_betaTest npm run IOS_runDeployment",
"IOS_runDeployment": "bundle exec fastlane ios $IOS_DEPLOY_TYPE",
...
}
第一个条目source
是我的文件,我的所有ENV导出都在该文件中(例如export BIMBOM=FooBar
)
完成后,它将执行npm run IOS_doInternalTest
。因为它是在相同的shell上下文中运行的,所以我之前source
的ENV变量仍然可用。
如果单线解决方案对您表示敬意