Ale*_*kov 5 javascript typescript babeljs expo
我们需要根据环境(local/dev/staging/production)修改我们的 React Native 应用程序(使用 Expo 构建)中的某些配置/变量。我已经查看了许多为此目的而设计的库,但似乎所有库都存在一个对我们的用例造成破坏的缺陷:
作为不需要第三方插件的更简洁的替代方案,我正在考虑使用 babel 的env选项,并将所有环境作为单独的 json 对象在babel.config.js. 但是,我没有看到太多关于此的文档或示例。难道我只是添加env在同一水平场presets和plugins包含production,development等等。如下面的例子中字段:
module.exports = (api) => {
api.cache(true);
return {
presets: [...],
env: {
development: {
CONFIG_VAR: 'foo'
},
production: {
CONFIG_VAR: 'bar'
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
那行得通吗?CONFIG_VAR稍后我将如何在代码中访问它?
尝试在我的 Expo 项目中设置环境变量时,我遇到了同样的问题。我为此使用了babel-plugin-inline-dotenv。
安装插件
npm install babel-plugin-inline-dotenv
Run Code Online (Sandbox Code Playgroud)
在您的babel.config.js文件中包含插件和 .env 文件的路径
npm install babel-plugin-inline-dotenv
Run Code Online (Sandbox Code Playgroud)
在您的 .env.production 或 .env.development 文件中,添加如下环境变量:
API_KEY='<YOUR_API_KEY>'
Run Code Online (Sandbox Code Playgroud)
稍后在您的代码中,您可以像这样访问上述变量:
process.env.API_KEY
Run Code Online (Sandbox Code Playgroud)
要访问您的ENV变量中的babel.config.js文件,使用dotenv包这样的:
require('dotenv').config({ path: './.env.development' })
console.log('API_KEY: ' + process.env.API_KEY)
module.exports = function() {
// ...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7304 次 |
| 最近记录: |