linux - 从 package.json 运行 `source` 以设置脚本运行的环境变量
问题描述
我的 package.json 中有一些script
-Entries。
为了通过 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",
但这并不能解决我的问题。我创建了一个 File: ios_env和linux_env,它导出了一些敏感的凭据。
如果我运行source linux_env
,则设置了变量,我可以通过 CLI-Command 运行 fastlane,而不会出现任何问题: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 中?
解决方案
我找到了一个丑陋的解决方法......但如果有人能告诉我一个更好的方法来:
在 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 上下文中运行,所以我之前source
编辑的 ENV 变量仍然可用。
向你致敬,如果你有一个单行的解决方案
推荐阅读
- c# - 我可以从 TableOperation Retrieve 操作中获取 PartionKey 和 RowKey 吗?
- c# - 将 IQueryable 对象与 xUnit 理论结合使用
- android-studio - 尝试从 Android Studio 启动我的应用时出现 NoSuchMethodException
- python-3.x - 如何在 Python 中使用带有路径名的 for 循环导入文件?
- asp.net-core - 在隐式流程中验证 IdentityServer4 中的用户名和密码
- javascript - 如何本地化 jQuery UI DateRangePicker?
- javascript - 为什么 getElementById() 在 Elements 上不可用?
- tfs - 如何将许可证添加到 TeamFoundation 2018?
- javascript - 如何将重复值对象计数为对象的值
- ssl - Kafka Connect 无法通过 SSL 从 Kafka 主题中读取