Estoy desarrollando un pequeño servidor hecho en node, hapijs, nodemon, etc.
Es un resto de API básico que crecerá con el desarrollo continuo.
Necesito tener diferentes variables para dev. y producción De hecho, solo tengo un archivo .env. He leído que no se recomienda tener 2 archivos separados para esto.
¿Cómo debo modificar mi app.js para tener dos situaciones?
Muchas gracias por adelantado,
Como probablemente ya lo hayas hecho. Escriba su código para usar variables de entorno. (ya sea que se ejecute localmente o en producción, ese es el mismo código).
const ACCESS_KEY = process.env.ACCESS_KEY; Su archivo .env contiene SOLAMENTE su configuración local , para depurar en su computadora local. Puede agregar .env en su archivo .gitignore para asegurarse de que no se envíe a su repositorio de git.
La configuración de producción, por el contrario, no debería estar en ningún archivo . Solo deben configurarse directamente en la configuración de su proveedor de nube.
Es posible hacer esto desde la pestaña "Configuración" en el tablero de la aplicación heroku. Hay una sección "Config vars".
Cuando heroku inicie su aplicación, definirá las variables de configuración configuradas como variables de entorno. Y podrá acceder a ellos con process.env tal como lo haría con las variables de entorno que se definieron en su archivo .env durante el desarrollo.
El tablero facilita obtener una descripción general y administrar las claves. Quizás aún más conveniente, también puede hacer esto con la herramienta heroku cli directamente desde la línea de comandos.
Para obtener una lista de sus variables de entorno actuales, ejecute.
heroku configPara agregar una nueva clave desde la CLI.
heroku config:set ACCESS_KEY=adfsqfddqsdfTodo esto también se describe en la documentación oficial de Heroku.
En general, generaría su archivo env en el momento de la compilación. Por ejemplo, al usar AWS SSM / o algún tipo de bóveda que sea segura, almacena sus secretos como contraseñas de db. El archivo env es una plantilla que se compila con las variables env correctas para la implementación de destino.
Además, puede tener variables ficticias en su plantilla env que comprometa con git. Luego agregue un archivo .gitignore con una entrada a su plantilla env para asegurarse de no comprometer ningún secreto en el archivo env. Luego, compila localmente su archivo para local, durante su compilación de puesta en escena para la puesta en escena, durante la compilación de producción para producción, etc.
A medida que la aplicación crece, esto le permite proporcionar credenciales por persona/por entorno. Agrega los secretos/permisos asociados a la bóveda. Permita que las personas/entornos accedan a esos secretos, y luego podrá controlar el acceso de una manera bastante detallada.
Sugiero usar un paquete npm para manejar diferentes claves y variables de entorno. (o implementarlo por ti mismo)
Junto con el archivo .env
1- use el archivo .env para almacenar credenciales y secretos 2- haga referencia a estas variables .env a través de un paquete diferente que proporciona un archivo separado para cada entorno
paquete sugerido: https://www.npmjs.com/package/config
Usé este enfoque en uno de mis proyectos y me hizo la vida más fácil.