我的package.json中有一些script
-Entries。
要通过Fastlane将App部署到appstore,我需要为APPLE ID或google-services的JSON-File设置environment-Variables。
此设置是每个用户(可能是每个项目)的个人设置。
我知道,如何通过package.json添加硬编码的ENV变量:
"ANDROID_closedBeta": "FASTLANE_JSON_KEY_FILE=`find $(pwd) -name release_manager.json` bundle exec fastlane android deploy_closedBeta",
但这并不能解决我的问题。我创建了一个File:ios_env和linux_env,它可以导出一些敏感的凭据。
如果我运行source linux_env
,变量已设置,我可以通过CLI-Command运行fastlane而没有任何问题:fastlane android deploy_closedBeta
但是,如果我尝试通过纱线或npm运行它,将无法找到此ENV。所以我试图在falstlane命令面前运行源代码,但也没有工作:
"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中?
我找到了一个丑陋的解决方法......但如果有人能告诉我一个更好的方法,我会很高兴:
在package.json中,我声明了两个设置。一个主要脚本需要仍然接收的ENV变量,一个脚本条目首先加载环境然后在这个环境中运行主脚本任务。
难以解释,易于展示......看看这个:
"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上下文中运行的,所以我之前使用过的ENV-Variables仍然可用。
如果您有一个单线程的解决方案,请感谢您