HarshvardhanCn01/Voice-Assistant
0
1<div align="center">2🎉 announcing <a href="https://github.com/dotenvx/dotenvx">dotenvx</a>. <em>run anywhere, multi-environment, encrypted envs</em>.3</div>4 5 6 7<div align="center">8 9<p>10 <sup>11 <a href="https://github.com/sponsors/motdotla">Dotenv es apoyado por la comunidad.</a>12 </sup>13</p>14<sup>Gracias espaciales a:</sup>15<br>16<br>17<a href="https://www.warp.dev/?utm_source=github&utm_medium=referral&utm_campaign=dotenv_p_20220831">18 <div>19 <img src="https://res.cloudinary.com/dotenv-org/image/upload/v1661980709/warp_hi8oqj.png" width="230" alt="Warp">20 </div>21 <b>Warp es una rápida e impresionante terminal basada en Rust, reinventado para funcionar como una aplicación moderna.</b>22 <div>23 <sup>Haga más en la CLI con edición de texto real, resultado básado en bloques, y busqueda de comandos de IA.</sup>24 </div>25</a>26<br>27<a href="https://retool.com/?utm_source=sponsor&utm_campaign=dotenv">28 <div>29 <img src="https://res.cloudinary.com/dotenv-org/image/upload/c_scale,w_300/v1664466968/logo-full-black_vidfqf.png" width="270" alt="Retool">30 </div>31 <b>Retool ayuda a los desarrolladores a crear software interno personalizado, como aplicaciones CRUD y paneles de administración, realmente rápido.</b>32 <div>33 <sup>Construya Interfaces de Usuario de forma visual con componentes flexibles, conéctese a cualquier fuente de datos, y escriba lógica de negocio en JavaScript.</sup>34 </div>35</a>36<br>37<a href="https://workos.com/?utm_campaign=github_repo&utm_medium=referral&utm_content=dotenv&utm_source=github">38 <div>39 <img src="https://res.cloudinary.com/dotenv-org/image/upload/c_scale,w_400/v1665605496/68747470733a2f2f73696e647265736f726875732e636f6d2f6173736574732f7468616e6b732f776f726b6f732d6c6f676f2d77686974652d62672e737667_zdmsbu.svg" width="270" alt="WorkOS">40 </div>41 <b>Su Apliación, Lista para la Empresa.</b>42 <div>43 <sup>Agrega Inicio de Sesión Único, Autenticación Multi-Factor, y mucho más, en minutos en lugar de meses.</sup>44 </div>45</a>46<hr>47<br>48<br>49<br>50<br>51 52</div>53 54# dotenv [](https://www.npmjs.com/package/dotenv)55 56<img src="https://raw.githubusercontent.com/motdotla/dotenv/master/dotenv.svg" alt="dotenv" align="right" width="200" />57 58Dotenv es un módulo de dependencia cero que carga las variables de entorno desde un archivo `.env` en [`process.env`](https://nodejs.org/docs/latest/api/process.html#process_process_env). El almacenamiento de la configuración del entorno separado del código está basado en la metodología [The Twelve-Factor App](http://12factor.net/config).59 60[](https://github.com/feross/standard)61[](LICENSE)62 63## Instalación64 65```bash66# instalación local (recomendado)67npm install dotenv --save68```69 70O installación con yarn? `yarn add dotenv`71 72## Uso73 74Cree un archivo `.env` en la raíz de su proyecto:75 76```dosini77S3_BUCKET="YOURS3BUCKET"78SECRET_KEY="YOURSECRETKEYGOESHERE"79```80 81Tan prónto como sea posible en su aplicación, importe y configure dotenv:82 83```javascript84require('dotenv').config()85console.log(process.env) // elimine esto después que haya confirmado que esta funcionando86```87 88.. o usa ES6?89 90```javascript91import * as dotenv from 'dotenv' // vea en https://github.com/motdotla/dotenv#como-uso-dotenv-con-import92// REVISAR LINK DE REFERENCIA DE IMPORTACIÓN93dotenv.config()94import express from 'express'95```96 97Eso es todo. `process.env` ahora tiene las claves y los valores que definiste en tu archivo `.env`:98 99```javascript100require('dotenv').config()101 102...103 104s3.getBucketCors({Bucket: process.env.S3_BUCKET}, function(err, data) {})105```106 107### Valores multilínea108 109Si necesita variables de varias líneas, por ejemplo, claves privadas, ahora se admiten en la versión (`>= v15.0.0`) con saltos de línea:110 111```dosini112PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----113...114Kh9NV...115...116-----END RSA PRIVATE KEY-----"117```118 119Alternativamente, puede usar comillas dobles y usar el carácter `\n`:120 121```dosini122PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\nKh9NV...\n-----END RSA PRIVATE KEY-----\n"123```124 125### Comentarios126 127Los comentarios pueden ser agregados en tu archivo o en la misma línea:128 129```dosini130# This is a comment131SECRET_KEY=YOURSECRETKEYGOESHERE # comment132SECRET_HASH="something-with-a-#-hash"133```134 135Los comentarios comienzan donde existe un `#`, entonces, si su valor contiene un `#`, enciérrelo entre comillas. Este es un cambio importante desde la versión `>= v15.0.0` en adelante.136 137### Análisis138 139El motor que analiza el contenido de su archivo que contiene variables de entorno está disponible para su uso. Este Acepta una Cadena o un Búfer y devolverá un Objeto con las claves y los valores analizados.140 141```javascript142const dotenv = require('dotenv')143const buf = Buffer.from('BASICO=basico')144const config = dotenv.parse(buf) // devolverá un objeto145console.log(typeof config, config) // objeto { BASICO : 'basico' }146```147 148### Precarga149 150Puede usar el `--require` (`-r`) [opción de línea de comando](https://nodejs.org/api/cli.html#-r---require-module) para precargar dotenv. Al hacer esto, no necesita requerir ni cargar dotnev en el código de su aplicación.151 152```bash153$ node -r dotenv/config tu_script.js154```155 156Las opciones de configuración a continuación se admiten como argumentos de línea de comandos en el formato `dotenv_config_<option>=value`157 158```bash159$ node -r dotenv/config tu_script.js dotenv_config_path=/custom/path/to/.env dotenv_config_debug=true160```161 162Además, puede usar variables de entorno para establecer opciones de configuración. Los argumentos de línea de comandos precederán a estos.163 164```bash165$ DOTENV_CONFIG_<OPTION>=value node -r dotenv/config tu_script.js166```167 168```bash169$ DOTENV_CONFIG_ENCODING=latin1 DOTENV_CONFIG_DEBUG=true node -r dotenv/config tu_script.js dotenv_config_path=/custom/path/to/.env170```171 172### Expansión Variable173 174Necesitaras agregar el valor de otro variable en una de sus variables? Usa [dotenv-expand](https://github.com/motdotla/dotenv-expand).175 176### Sincronizando177 178Necesitas mentener sincronizados los archivos `.env` entre maquinas, entornos, o miembros del equipo? Usa 179[dotenv-vault](https://github.com/dotenv-org/dotenv-vault).180 181## Ejemplos182 183Vea [ejemplos](https://github.com/dotenv-org/examples) sobre el uso de dotenv con varios frameworks, lenguajes y configuraciones.184 185* [nodejs](https://github.com/dotenv-org/examples/tree/master/dotenv-nodejs)186* [nodejs (depurar en)](https://github.com/dotenv-org/examples/tree/master/dotenv-nodejs-debug)187* [nodejs (anular en)](https://github.com/dotenv-org/examples/tree/master/dotenv-nodejs-override)188* [esm](https://github.com/dotenv-org/examples/tree/master/dotenv-esm)189* [esm (precarga)](https://github.com/dotenv-org/examples/tree/master/dotenv-esm-preload)190* [typescript](https://github.com/dotenv-org/examples/tree/master/dotenv-typescript)191* [typescript parse](https://github.com/dotenv-org/examples/tree/master/dotenv-typescript-parse)192* [typescript config](https://github.com/dotenv-org/examples/tree/master/dotenv-typescript-config)193* [webpack](https://github.com/dotenv-org/examples/tree/master/dotenv-webpack)194* [webpack (plugin)](https://github.com/dotenv-org/examples/tree/master/dotenv-webpack2)195* [react](https://github.com/dotenv-org/examples/tree/master/dotenv-react)196* [react (typescript)](https://github.com/dotenv-org/examples/tree/master/dotenv-react-typescript)197* [express](https://github.com/dotenv-org/examples/tree/master/dotenv-express)198* [nestjs](https://github.com/dotenv-org/examples/tree/master/dotenv-nestjs)199 200## Documentación201 202Dotenv expone dos funciones:203 204* `configuración`205* `analizar`206 207### Configuración208 209`Configuración` leerá su archivo `.env`, analizará el contenido, lo asignará a [`process.env`](https://nodejs.org/docs/latest/api/process.html#process_process_env),210y devolverá un Objeto con una clave `parsed` que contiene el contenido cargado o una clave `error` si falla.211 212```js213const result = dotenv.config()214 215if (result.error) {216 throw result.error217}218 219console.log(result.parsed)220```221 222Adicionalmente, puede pasar opciones a `configuracion`.223 224#### Opciones225 226##### Ruta227 228Por defecto: `path.resolve(process.cwd(), '.env')`229 230Especifique una ruta personalizada si el archivo que contiene las variables de entorno se encuentra localizado en otro lugar.231 232```js233require('dotenv').config({ path: '/personalizado/ruta/a/.env' })234```235 236##### Codificación237 238Por defecto: `utf8`239 240Especifique la codificación del archivo que contiene las variables de entorno.241 242```js243require('dotenv').config({ encoding: 'latin1' })244```245 246##### Depurar247 248Por defecto: `false`249 250Active el registro de ayuda para depurar por qué ciertas claves o valores no se inician como lo esperabas.251 252```js253require('dotenv').config({ debug: process.env.DEBUG })254```255 256##### Anular257 258Por defecto: `false`259 260Anule cualquier variable de entorno que ya se haya configurada en su maquina con los valores de su archivo .env.261 262```js263require('dotenv').config({ override: true })264```265 266### Analizar267 268El motor que analiza el contenido del archivo que contiene las variables de entorno está disponible para su uso. Acepta una Cadena o un Búfer y retornará un objecto con los valores analizados.269 270```js271const dotenv = require('dotenv')272const buf = Buffer.from('BASICO=basico')273const config = dotenv.parse(buf) // devolverá un objeto274console.log(typeof config, config) // objeto { BASICO : 'basico' }275```276 277#### Opciones278 279##### Depurar280 281Por defecto: `false`282 283Active el registro de ayuda para depurar por qué ciertas claves o valores no se inician como lo esperabas.284 285```js286const dotenv = require('dotenv')287const buf = Buffer.from('hola mundo')288const opt = { debug: true }289const config = dotenv.parse(buf, opt)290// espere por un mensaje de depuración porque el búfer no esta listo KEY=VAL291```292 293## FAQ294 295### ¿Por qué el archivo `.env` no carga mis variables de entorno correctamente?296 297Lo más probable es que su archivo `.env` no esté en el lugar correcto. [Vea este stack overflow](https://stackoverflow.com/questions/42335016/dotenv-file-is-not-loading-environment-variables).298 299Active el modo de depuración y vuelva a intentarlo...300 301```js302require('dotenv').config({ debug: true })303```304 305Recibirá un error apropiado en su consola.306 307### ¿Debo confirmar mi archivo `.env`?308 309No. Recomendamos **enfáticamente** no enviar su archivo `.env` a la versión de control. Solo debe incluir los valores especificos del entorno, como la base de datos, contraseñas o claves API.310 311### ¿Debería tener multiples archivos `.env`?312 313No. Recomendamos **enfáticamente** no tener un archivo `.env` "principal" y un archivo `.env` de "entorno" como `.env.test`. Su configuración debe variar entre implementaciones y no debe compartir valores entre entornos.314 315> En una Aplicación de Doce Factores, las variables de entorno son controles diferenciados, cada uno totalmente independiente a otras variables de entorno. Nunca se agrupan como "entornos", sino que se gestionan de manera independiente para cada despliegue. Este es un modelo que se escala sin problemas a medida que la aplicación se expande de forma natural en más despliegues a lo largo de su vida.316>317> – [La Apliación de los Doce Factores](https://12factor.net/es/)318 319### ¿Qué reglas sigue el motor de análisis?320 321El motor de análisis actualmente admite las siguientes reglas:322 323- `BASICO=basico` se convierte en `{BASICO: 'basico'}`324- las líneas vacías se saltan325- las líneas que comienzan con `#` se tratan como comentarios326- `#` marca el comienzo de un comentario (a menos que el valor esté entre comillas)327- valores vacíos se convierten en cadenas vacías (`VACIO=` se convierte en `{VACIO: ''}`)328- las comillas internas se mantienen (piensa en JSON) (`JSON={"foo": "bar"}` se convierte en `{JSON:"{\"foo\": \"bar\"}"`)329- los espacios en blanco se eliminan de ambos extremos de los valores no citanos (aprende más en [`trim`](https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/String/Trim)) (`FOO= algo ` se convierte en `{FOO: 'algo'}`)330- los valores entre comillas simples y dobles se escapan (`CITA_SIMPLE='citado'` se convierte en `{CITA_SIMPLE: "citado"}`)331- los valores entre comillas simples y dobles mantienen los espacios en blanco en ambos extremos (`FOO=" algo "` se convierte en `{FOO: ' algo '}`)332- los valores entre comillas dobles expanden nuevas líneas (`MULTILINEA="nueva\nlínea"` se convierte en333 334```335{MULTILINEA: 'nueva336línea'}337```338 339- se admite la comilla simple invertida (`` SIGNO_ACENTO=`Esto tiene comillas 'simples' y "dobles" en su interior.` ``)340 341### ¿Qué sucede con las variables de entorno que ya estaban configuradas?342 343Por defecto, nunca modificaremos ninguna variable de entorno que ya haya sido establecida. En particular, si hay una variable en su archivo `.env` que colisiona con una que ya existe en su entorno, entonces esa variable se omitirá.344 345Si por el contrario, quieres anular `process.env` utiliza la opción `override`.346 347```javascript348require('dotenv').config({ override: true })349```350 351### ¿Por qué mis variables de entorno no aparecen para React?352 353Su código React se ejecuta en Webpack, donde el módulo `fs` o incluso el propio `process` global no son accesibles fuera-de-la-caja. El módulo `process.env` sólo puede ser inyectado a través de la configuración de Webpack.354 355Si estás usando [`react-scripts`](https://www.npmjs.com/package/react-scripts), el cual se distribuye a través de [`create-react-app`](https://create-react-app.dev/), tiene dotenv incorporado pero con una singularidad. Escriba sus variables de entorno con `REACT_APP_`. Vea [este stack overflow](https://stackoverflow.com/questions/42182577/is-it-possible-to-use-dotenv-in-a-react-project) para más detalles.356 357Si estás utilizando otros frameworks (por ejemplo, Next.js, Gatsby...), debes consultar su documentación para saber cómo injectar variables de entorno en el cliente.358 359### ¿Puedo personalizar/escribir plugins para dotenv?360 361Sí! `dotenv.config()` devuelve un objeto que representa el archivo `.env` analizado. Esto te da todo lo que necesitas para poder establecer valores en `process.env`. Por ejemplo:362 363```js364const dotenv = require('dotenv')365const variableExpansion = require('dotenv-expand')366const miEnv = dotenv.config()367variableExpansion(miEnv)368```369 370### Cómo uso dotnev con `import`?371 372Simplemente..373 374```javascript375// index.mjs (ESM)376import * as dotenv from 'dotenv' // vea https://github.com/motdotla/dotenv#como-uso-dotenv-con-import377dotenv.config()378import express from 'express'379```380 381Un poco de historia...382 383> Cuando se ejecuta un módulo que contiene una sentencia `import`, los módulos que importa serán cargados primero, y luego se ejecuta cada bloque del módulo en un recorrido en profundidad del gráfico de dependencias, evitando los ciclos al saltarse todo lo que ya se ha ejecutado.384>385> – [ES6 en Profundidad: Módulos](https://hacks.mozilla.org/2015/08/es6-in-depth-modules/)386 387¿Qué significa esto en lenguaje sencillo? Significa que se podrías pensar que lo siguiente funcionaría pero no lo hará.388 389```js390// notificarError.mjs391import { Cliente } from 'mejor-servicio-para-notificar-error'392 393export default new Client(process.env.CLAVE_API)394 395// index.mjs396import dotenv from 'dotenv'397dotenv.config()398 399import notificarError from './notificarError.mjs'400notificarError.report(new Error('ejemplo documentado'))401```402 403`process.env.CLAVE_API` será vacio.404 405En su lugar, el código anterior debe ser escrito como...406 407```js408// notificarError.mjs409import { Cliente } from 'mejor-servicio-para-notificar-errores'410 411export default new Client(process.env.CLAVE_API)412 413// index.mjs414import * as dotenv from 'dotenv'415dotenv.config()416 417import notificarError from './notificarError.mjs'418notificarError.report(new Error('ejemplo documentado'))419```420 421¿Esto tiene algo de sentido? Esto es poco poco intuitivo, pero es como funciona la importación de módulos en ES6. Aquí hay un ejemplo [ejemplo práctico de esta trampa](https://github.com/dotenv-org/examples/tree/master/dotenv-es6-import-pitfall).422 423Existen dos arternativas a este planteamiento:424 4251. Precarga dotenv: `node --require dotenv/config index.js` (_Nota: no es necesario usar `import` dotenv con este método_)4262. Cree un archivo separado que ejecutará `config` primero como se describe en [este comentario #133](https://github.com/motdotla/dotenv/issues/133#issuecomment-255298822)427 428### ¿Qué pasa con la expansión de variable?429 430Prueba [dotenv-expand](https://github.com/motdotla/dotenv-expand)431 432### ¿Qué pasa con la sincronización y la seguridad de los archivos .env?433 434Vea [dotenv-vault](https://github.com/dotenv-org/dotenv-vault)435 436## Guía de contribución437 438Vea [CONTRIBUTING.md](CONTRIBUTING.md)439 440## REGISTRO DE CAMBIOS441 442Vea [CHANGELOG.md](CHANGELOG.md)443 444## ¿Quiénes utilizan dotenv?445 446[Estos módulos npm dependen de él.](https://www.npmjs.com/browse/depended/dotenv)447 448Los proyectos que lo amplían suelen utilizar la [palabra clave "dotenv" en npm](https://www.npmjs.com/search?q=keywords:dotenv).449 