Expo应用本地Xcode归档时,如何切换test环境并配置NODE_ENV
解决Xcode归档时切换Test环境并自动更新配置的方案
1. 将静态配置文件改为动态JS格式
把app.config.json重命名为app.config.js,通过JS代码读取环境变量生成动态配置。先确保安装dotenv依赖:
npm install dotenv --save-dev # 或 yarn add dotenv -D
示例app.config.js内容:
require('dotenv').config({ path: `.env.${process.env.NODE_ENV || 'development'}` }); module.exports = { expo: { name: process.env.APP_NAME, slug: process.env.APP_SLUG, ios: { bundleIdentifier: process.env.IOS_BUNDLE_ID, }, // 其他所有需要根据环境变更的配置项,均用process.env.XXX替换硬编码值 }, };
2. 配置Xcode归档脚本,强制设置NODE_ENV为test
打开iOS工程目录下的Xcode项目,按以下步骤操作:
- 选中项目根节点,切换到Build Phases标签页
- 点击左上角
+号,选择New Run Script Phase - 将该脚本拖到Dependencies之后、Compile Sources之前
- 在脚本输入框中填写:
export NODE_ENV=test echo "NODE_ENV set to $NODE_ENV for archive"
这样Xcode执行归档操作时,会先将环境变量设为test,确保app.config.js读取.env.test中的配置。
3. 验证配置生效
可在app.config.js中添加调试代码,确认环境变量加载正确:
console.log(`Loaded config for environment: ${process.env.NODE_ENV}`);
执行Xcode Build操作,查看控制台输出,确认NODE_ENV为test且对应环境的配置参数已加载。
4. 避免prebuild重置脚本(可选)
若使用expo prebuild生成iOS工程,每次prebuild会重置Xcode配置,可在app.config.js中添加自动生成脚本的配置:
module.exports = { expo: { // 其他配置 ios: { buildPhases: [ { name: 'Set NODE_ENV for Test Archive', script: 'export NODE_ENV=test\necho "NODE_ENV set to $NODE_ENV"', executionPosition: 'before_compile', }, ], }, }, };
后续执行expo prebuild时,会自动在Xcode工程中添加该Run Script。
内容的提问来源于stack exchange,提问作者ashfaq.p
相关产品推荐
相关产品推荐

