Customize Consent Preferences

We use cookies to help you navigate efficiently and perform certain functions. You will find detailed information about all cookies under each consent category below.

The cookies that are categorized as "Necessary" are stored on your browser as they are essential for enabling the basic functionalities of the site. ... 

Always Active

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

No cookies to display.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

No cookies to display.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

No cookies to display.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

No cookies to display.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

No cookies to display.

Cargar .env en un proyecto de React Native

Tiempo de lectura: 3 minutos

Para cargar un archivo .env en un proyecto de React Native, es común usar la biblioteca react-native-dotenv o react-native-config, que te permite gestionar variables de entorno de manera eficiente.

1. Instalar las dependencias necesarias

Ejecuta el siguiente comando en la terminal para instalar react-native-config en tu proyecto.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
npm install react-native-config
npm install react-native-config
npm install react-native-config

Si estás usando Yarn:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
yarn add react-native-config
yarn add react-native-config
yarn add react-native-config

2. Agregar las variables de entorno en un archivo .env

Crea un archivo .env en la raíz de tu proyecto. Aquí puedes definir tus variables de entorno. Por ejemplo:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
API_URL=https://api.ejemplo.com
APP_ENV=development
API_URL=https://api.ejemplo.com APP_ENV=development
API_URL=https://api.ejemplo.com
APP_ENV=development

3. Configurar react-native-config

Asegúrate de vincular la biblioteca react-native-config con tu proyecto de React Native.

Para proyectos con autolinking (React Native 0.60+):

No necesitas hacer nada especial, ya que la librería se vincula automáticamente. Sin embargo, si estás en una versión anterior de React Native, puedes vincular manualmente ejecutando:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
npx react-native link react-native-config
npx react-native link react-native-config
npx react-native link react-native-config

iOS:

Abre el archivo ios/NombreDeTuApp.xcworkspace en Xcode, luego:

  1. En el árbol del proyecto, selecciona tu proyecto, ve a Build Settings y busca All para encontrar la opción Preprocessor Macros.
  2. Agrega una entrada con el valor ${CONFIGURATION} $(inherited).

Android:

  1. En el archivo android/app/build.gradle, agrega la siguiente línea dentro de defaultConfig:
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
apply from: project(':react-native-config').projectDir.getPath() + "/dotenv.gradle"
apply from: project(':react-native-config').projectDir.getPath() + "/dotenv.gradle"
   apply from: project(':react-native-config').projectDir.getPath() + "/dotenv.gradle"
  1. Asegúrate de que tu archivo settings.gradle tenga lo siguiente:
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
include ':react-native-config'
project(':react-native-config').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-config/android')
include ':react-native-config' project(':react-native-config').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-config/android')
   include ':react-native-config'
   project(':react-native-config').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-config/android')

4. Uso de las variables de entorno en tu código

En tu código de React Native, puedes acceder a las variables de entorno utilizando la biblioteca de la siguiente manera:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
import Config from 'react-native-config';
console.log(Config.API_URL); // Esto mostrará 'https://api.ejemplo.com'
import Config from 'react-native-config'; console.log(Config.API_URL); // Esto mostrará 'https://api.ejemplo.com'
import Config from 'react-native-config';

console.log(Config.API_URL);  // Esto mostrará 'https://api.ejemplo.com'

5. Recomendaciones y buenas prácticas

  • Nunca incluyas tus archivos .env en tu control de versiones. Asegúrate de agregarlo a tu archivo .gitignore:
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
.env
.env
  .env
  • Si estás utilizando servicios externos (como una API), define variables separadas para entornos de desarrollo, producción, y pruebas. Puedes crear archivos como .env.production, .env.staging, etc., y configurarlos correctamente en cada entorno de despliegue.

6. Recarga de las variables de entorno

Si cambias alguna variable en el archivo .env, deberás reiniciar tu aplicación para que los cambios surtan efecto. Puedes hacer esto deteniendo la ejecución y reiniciando con:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
npm run android # Para Android
npm run ios # Para iOS
npm run android # Para Android npm run ios # Para iOS
npm run android  # Para Android
npm run ios      # Para iOS

Ahora usaremos la biblioteca react-native-dotenv. Esta biblioteca es ligera y fácil de usar para manejar variables de entorno en un proyecto.

1. Instalar react-native-dotenv

Primero, instala la biblioteca react-native-dotenv en tu proyecto utilizando npm o yarn.

Con npm:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
npm install react-native-dotenv
npm install react-native-dotenv
npm install react-native-dotenv

Con yarn:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
yarn add react-native-dotenv
yarn add react-native-dotenv
yarn add react-native-dotenv

2. Configurar babel.config.js

Ahora, debes configurar Babel para que pueda reconocer y cargar las variables de entorno desde el archivo .env. Para ello, abre el archivo babel.config.js en la raíz de tu proyecto y añade el plugin de react-native-dotenv.

Asegúrate de que tu archivo babel.config.js se vea similar a este:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
module.exports = {
presets: ['module:metro-react-native-babel-preset'],
plugins: [
['module:react-native-dotenv', {
moduleName: '@env',
path: '.env',
blacklist: null,
whitelist: null,
safe: false,
allowUndefined: true
}]
]
};
module.exports = { presets: ['module:metro-react-native-babel-preset'], plugins: [ ['module:react-native-dotenv', { moduleName: '@env', path: '.env', blacklist: null, whitelist: null, safe: false, allowUndefined: true }] ] };
module.exports = {
  presets: ['module:metro-react-native-babel-preset'],
  plugins: [
    ['module:react-native-dotenv', {
      moduleName: '@env',
      path: '.env',
      blacklist: null,
      whitelist: null,
      safe: false,
      allowUndefined: true
    }]
  ]
};

3. Crear el archivo .env

En la raíz de tu proyecto, crea un archivo .env y define tus variables de entorno. Asegúrate de seguir el formato NOMBRE=valor.

Por ejemplo:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
API_URL=https://api.miapp.com
APP_ENV=development
API_URL=https://api.miapp.com APP_ENV=development
API_URL=https://api.miapp.com
APP_ENV=development

4. Uso de las variables en el código

Ahora puedes importar y usar las variables de entorno directamente en tus componentes o módulos de React Native. Debes utilizar la sintaxis de importación de ES6 para acceder a estas variables.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
import { API_URL, APP_ENV } from '@env';
console.log(API_URL); // Esto mostrará 'https://api.miapp.com'
console.log(APP_ENV); // Esto mostrará 'development'
import { API_URL, APP_ENV } from '@env'; console.log(API_URL); // Esto mostrará 'https://api.miapp.com' console.log(APP_ENV); // Esto mostrará 'development'
import { API_URL, APP_ENV } from '@env';

console.log(API_URL);  // Esto mostrará 'https://api.miapp.com'
console.log(APP_ENV);  // Esto mostrará 'development'

5. Evitar incluir el archivo .env en tu control de versiones

Es importante que no subas el archivo .env a tu repositorio, especialmente si contiene información sensible como claves de API. Asegúrate de añadirlo a tu archivo .gitignore:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
.env
.env
.env

6. Recarga de las variables de entorno

Cada vez que modifiques el archivo .env, debes detener y reiniciar tu aplicación para que los cambios surtan efecto.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
npx react-native run-android # Para Android
npx react-native run-ios # Para iOS
npx react-native run-android # Para Android npx react-native run-ios # Para iOS
npx react-native run-android  # Para Android
npx react-native run-ios      # Para iOS

7. Consideraciones adicionales

  • Archivos .env para diferentes entornos: Puedes tener múltiples archivos .env para diferentes entornos (por ejemplo, .env.production, .env.staging). Sin embargo, con react-native-dotenv, solo se carga un archivo .env especificado en la configuración de Babel. Puedes cambiar el nombre del archivo en el campo path del plugin Babel si lo necesitas.
  • Variables críticas: No uses este método para variables extremadamente sensibles como contraseñas, ya que las variables de entorno pueden quedar expuestas si alguien inspecciona el paquete de tu aplicación.

0

Deja un comentario