[英]environment variables in babel.config.js
我们需要根据环境(local/dev/staging/production)修改我们的 React Native 应用程序(使用 Expo 构建)中的某些配置/变量。 我已经查看了许多为此目的而设计的库,但似乎所有库都存在破坏我们用例的缺陷:
作为不需要第三方插件的更简洁的替代方案,我正在考虑使用 babel 的env选项,并将所有环境列为babel.config.js
单独的 json 对象。 但是,我没有看到太多关于此的文档或示例。 我是否只添加与包含production
、 development
等字段的presets
和plugins
相同级别的env
字段,如下例所示:
module.exports = (api) => {
api.cache(true);
return {
presets: [...],
env: {
development: {
CONFIG_VAR: 'foo'
},
production: {
CONFIG_VAR: 'bar'
}
}
}
}
那行得通吗? 稍后我将如何在代码中访问此CONFIG_VAR
?
尝试在我的 Expo 项目中设置环境变量时,我遇到了同样的问题。 我为此使用了babel-plugin-inline-dotenv 。
安装插件
npm install babel-plugin-inline-dotenv
包括插件和路径.ENV文件在您babel.config.js
文件
module.exports = function(api) { api.cache(true); return { presets: ['babel-preset-expo'], env: { production: { plugins: [["inline-dotenv",{ path: '.env.production' }]] }, development: { plugins: [["inline-dotenv",{ path: '.env.development' }]] } } }; };
在您的 .env.production 或 .env.development 文件中,添加如下环境变量:
API_KEY='<YOUR_API_KEY>'
稍后在您的代码中,您可以像这样访问上述变量:
process.env.API_KEY
到内访问您的ENV变量babel.config.js
文件,使用dotenv
包是这样的:
require('dotenv').config({ path: './.env.development' })
console.log('API_KEY: ' + process.env.API_KEY)
module.exports = function() {
// ...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.