source: node_modules/dotenv/README-es.md@ 62b2964

finki-main main
Last change on this file since 62b2964 was 81bc7da, checked in by Klimentina Efremova <klimentina08642@…>, 3 months ago

Initial commit

  • Property mode set to 100644
File size: 15.2 KB
Line 
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&nbsp;
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
18<a href="https://graphite.dev/?utm_source=github&utm_medium=repo&utm_campaign=dotenv"><img src="https://res.cloudinary.com/dotenv-org/image/upload/v1744035073/graphite_lgsrl8.gif" width="240" alt="Graphite" /></a>
19
20<a href="https://graphite.dev/?utm_source=github&utm_medium=repo&utm_campaign=dotenv">
21 <b>Graphite is the AI developer productivity platform helping teams on GitHub ship higher quality software, faster.</b>
22</a>
23<hr>
24</div>
25
26# dotenv [![NPM version](https://img.shields.io/npm/v/dotenv.svg?style=flat-square)](https://www.npmjs.com/package/dotenv)
27
28<img src="https://raw.githubusercontent.com/motdotla/dotenv/master/dotenv.svg" alt="dotenv" align="right" width="200" />
29
30Dotenv 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).
31
32[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square)](https://github.com/feross/standard)
33[![LICENSE](https://img.shields.io/github/license/motdotla/dotenv.svg)](LICENSE)
34
35## Instalación
36
37```bash
38# instalación local (recomendado)
39npm install dotenv --save
40```
41
42O installación con yarn? `yarn add dotenv`
43
44## Uso
45
46Cree un archivo `.env` en la raíz de su proyecto:
47
48```dosini
49S3_BUCKET="YOURS3BUCKET"
50SECRET_KEY="YOURSECRETKEYGOESHERE"
51```
52
53Tan prónto como sea posible en su aplicación, importe y configure dotenv:
54
55```javascript
56require('dotenv').config()
57console.log(process.env) // elimine esto después que haya confirmado que esta funcionando
58```
59
60.. o usa ES6?
61
62```javascript
63import * as dotenv from 'dotenv' // vea en https://github.com/motdotla/dotenv#como-uso-dotenv-con-import
64// REVISAR LINK DE REFERENCIA DE IMPORTACIÓN
65dotenv.config()
66import express from 'express'
67```
68
69Eso es todo. `process.env` ahora tiene las claves y los valores que definiste en tu archivo `.env`:
70
71```javascript
72require('dotenv').config()
73
74...
75
76s3.getBucketCors({Bucket: process.env.S3_BUCKET}, function(err, data) {})
77```
78
79### Valores multilínea
80
81Si 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:
82
83```dosini
84PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----
85...
86Kh9NV...
87...
88-----END RSA PRIVATE KEY-----"
89```
90
91Alternativamente, puede usar comillas dobles y usar el carácter `\n`:
92
93```dosini
94PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\nKh9NV...\n-----END RSA PRIVATE KEY-----\n"
95```
96
97### Comentarios
98
99Los comentarios pueden ser agregados en tu archivo o en la misma línea:
100
101```dosini
102# This is a comment
103SECRET_KEY=YOURSECRETKEYGOESHERE # comment
104SECRET_HASH="something-with-a-#-hash"
105```
106
107Los 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.
108
109### Análisis
110
111El 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.
112
113```javascript
114const dotenv = require('dotenv')
115const buf = Buffer.from('BASICO=basico')
116const config = dotenv.parse(buf) // devolverá un objeto
117console.log(typeof config, config) // objeto { BASICO : 'basico' }
118```
119
120### Precarga
121
122Puede 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.
123
124```bash
125$ node -r dotenv/config tu_script.js
126```
127
128Las opciones de configuración a continuación se admiten como argumentos de línea de comandos en el formato `dotenv_config_<option>=value`
129
130```bash
131$ node -r dotenv/config tu_script.js dotenv_config_path=/custom/path/to/.env dotenv_config_debug=true
132```
133
134Además, puede usar variables de entorno para establecer opciones de configuración. Los argumentos de línea de comandos precederán a estos.
135
136```bash
137$ DOTENV_CONFIG_<OPTION>=value node -r dotenv/config tu_script.js
138```
139
140```bash
141$ DOTENV_CONFIG_ENCODING=latin1 DOTENV_CONFIG_DEBUG=true node -r dotenv/config tu_script.js dotenv_config_path=/custom/path/to/.env
142```
143
144### Expansión Variable
145
146Necesitaras agregar el valor de otro variable en una de sus variables? Usa [dotenv-expand](https://github.com/motdotla/dotenv-expand).
147
148## Ejemplos
149
150Vea [ejemplos](https://github.com/dotenv-org/examples) sobre el uso de dotenv con varios frameworks, lenguajes y configuraciones.
151
152* [nodejs](https://github.com/dotenv-org/examples/tree/master/dotenv-nodejs)
153* [nodejs (depurar en)](https://github.com/dotenv-org/examples/tree/master/dotenv-nodejs-debug)
154* [nodejs (anular en)](https://github.com/dotenv-org/examples/tree/master/dotenv-nodejs-override)
155* [esm](https://github.com/dotenv-org/examples/tree/master/dotenv-esm)
156* [esm (precarga)](https://github.com/dotenv-org/examples/tree/master/dotenv-esm-preload)
157* [typescript](https://github.com/dotenv-org/examples/tree/master/dotenv-typescript)
158* [typescript parse](https://github.com/dotenv-org/examples/tree/master/dotenv-typescript-parse)
159* [typescript config](https://github.com/dotenv-org/examples/tree/master/dotenv-typescript-config)
160* [webpack](https://github.com/dotenv-org/examples/tree/master/dotenv-webpack)
161* [webpack (plugin)](https://github.com/dotenv-org/examples/tree/master/dotenv-webpack2)
162* [react](https://github.com/dotenv-org/examples/tree/master/dotenv-react)
163* [react (typescript)](https://github.com/dotenv-org/examples/tree/master/dotenv-react-typescript)
164* [express](https://github.com/dotenv-org/examples/tree/master/dotenv-express)
165* [nestjs](https://github.com/dotenv-org/examples/tree/master/dotenv-nestjs)
166
167## Documentación
168
169Dotenv expone dos funciones:
170
171* `configuración`
172* `analizar`
173
174### Configuración
175
176`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),
177y devolverá un Objeto con una clave `parsed` que contiene el contenido cargado o una clave `error` si falla.
178
179```js
180const result = dotenv.config()
181
182if (result.error) {
183 throw result.error
184}
185
186console.log(result.parsed)
187```
188
189Adicionalmente, puede pasar opciones a `configuracion`.
190
191#### Opciones
192
193##### Ruta
194
195Por defecto: `path.resolve(process.cwd(), '.env')`
196
197Especifique una ruta personalizada si el archivo que contiene las variables de entorno se encuentra localizado en otro lugar.
198
199```js
200require('dotenv').config({ path: '/personalizado/ruta/a/.env' })
201```
202
203##### Codificación
204
205Por defecto: `utf8`
206
207Especifique la codificación del archivo que contiene las variables de entorno.
208
209```js
210require('dotenv').config({ encoding: 'latin1' })
211```
212
213##### Depurar
214
215Por defecto: `false`
216
217Active el registro de ayuda para depurar por qué ciertas claves o valores no se inician como lo esperabas.
218
219```js
220require('dotenv').config({ debug: process.env.DEBUG })
221```
222
223##### Anular
224
225Por defecto: `false`
226
227Anule cualquier variable de entorno que ya se haya configurada en su maquina con los valores de su archivo .env.
228
229```js
230require('dotenv').config({ override: true })
231```
232
233### Analizar
234
235El 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.
236
237```js
238const dotenv = require('dotenv')
239const buf = Buffer.from('BASICO=basico')
240const config = dotenv.parse(buf) // devolverá un objeto
241console.log(typeof config, config) // objeto { BASICO : 'basico' }
242```
243
244#### Opciones
245
246##### Depurar
247
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```js
253const dotenv = require('dotenv')
254const buf = Buffer.from('hola mundo')
255const opt = { debug: true }
256const config = dotenv.parse(buf, opt)
257// espere por un mensaje de depuración porque el búfer no esta listo KEY=VAL
258```
259
260## FAQ
261
262### ¿Por qué el archivo `.env` no carga mis variables de entorno correctamente?
263
264Lo 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).
265
266Active el modo de depuración y vuelva a intentarlo...
267
268```js
269require('dotenv').config({ debug: true })
270```
271
272Recibirá un error apropiado en su consola.
273
274### ¿Debo confirmar mi archivo `.env`?
275
276No. 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.
277
278### ¿Debería tener multiples archivos `.env`?
279
280No. 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.
281
282> 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.
283>
284> – [La Apliación de los Doce Factores](https://12factor.net/es/)
285
286### ¿Qué reglas sigue el motor de análisis?
287
288El motor de análisis actualmente admite las siguientes reglas:
289
290- `BASICO=basico` se convierte en `{BASICO: 'basico'}`
291- las líneas vacías se saltan
292- las líneas que comienzan con `#` se tratan como comentarios
293- `#` marca el comienzo de un comentario (a menos que el valor esté entre comillas)
294- valores vacíos se convierten en cadenas vacías (`VACIO=` se convierte en `{VACIO: ''}`)
295- las comillas internas se mantienen (piensa en JSON) (`JSON={"foo": "bar"}` se convierte en `{JSON:"{\"foo\": \"bar\"}"`)
296- 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'}`)
297- los valores entre comillas simples y dobles se escapan (`CITA_SIMPLE='citado'` se convierte en `{CITA_SIMPLE: "citado"}`)
298- los valores entre comillas simples y dobles mantienen los espacios en blanco en ambos extremos (`FOO=" algo "` se convierte en `{FOO: ' algo '}`)
299- los valores entre comillas dobles expanden nuevas líneas (`MULTILINEA="nueva\nlínea"` se convierte en
300
301```
302{MULTILINEA: 'nueva
303línea'}
304```
305
306- se admite la comilla simple invertida (`` SIGNO_ACENTO=`Esto tiene comillas 'simples' y "dobles" en su interior.` ``)
307
308### ¿Qué sucede con las variables de entorno que ya estaban configuradas?
309
310Por 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á.
311
312Si por el contrario, quieres anular `process.env` utiliza la opción `override`.
313
314```javascript
315require('dotenv').config({ override: true })
316```
317
318### ¿Por qué mis variables de entorno no aparecen para React?
319
320Su 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.
321
322Si 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.
323
324Si 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.
325
326### ¿Puedo personalizar/escribir plugins para dotenv?
327
328Sí! `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:
329
330```js
331const dotenv = require('dotenv')
332const variableExpansion = require('dotenv-expand')
333const miEnv = dotenv.config()
334variableExpansion(miEnv)
335```
336
337### Cómo uso dotnev con `import`?
338
339Simplemente..
340
341```javascript
342// index.mjs (ESM)
343import * as dotenv from 'dotenv' // vea https://github.com/motdotla/dotenv#como-uso-dotenv-con-import
344dotenv.config()
345import express from 'express'
346```
347
348Un poco de historia...
349
350> 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.
351>
352> – [ES6 en Profundidad: Módulos](https://hacks.mozilla.org/2015/08/es6-in-depth-modules/)
353
354¿Qué significa esto en lenguaje sencillo? Significa que se podrías pensar que lo siguiente funcionaría pero no lo hará.
355
356```js
357// notificarError.mjs
358import { Cliente } from 'mejor-servicio-para-notificar-error'
359
360export default new Client(process.env.CLAVE_API)
361
362// index.mjs
363import dotenv from 'dotenv'
364dotenv.config()
365
366import notificarError from './notificarError.mjs'
367notificarError.report(new Error('ejemplo documentado'))
368```
369
370`process.env.CLAVE_API` será vacio.
371
372En su lugar, el código anterior debe ser escrito como...
373
374```js
375// notificarError.mjs
376import { Cliente } from 'mejor-servicio-para-notificar-errores'
377
378export default new Client(process.env.CLAVE_API)
379
380// index.mjs
381import * as dotenv from 'dotenv'
382dotenv.config()
383
384import notificarError from './notificarError.mjs'
385notificarError.report(new Error('ejemplo documentado'))
386```
387
388¿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).
389
390Existen dos arternativas a este planteamiento:
391
3921. Precarga dotenv: `node --require dotenv/config index.js` (_Nota: no es necesario usar `import` dotenv con este método_)
3932. Cree un archivo separado que ejecutará `config` primero como se describe en [este comentario #133](https://github.com/motdotla/dotenv/issues/133#issuecomment-255298822)
394
395### ¿Qué pasa con la expansión de variable?
396
397Prueba [dotenv-expand](https://github.com/motdotla/dotenv-expand)
398
399## Guía de contribución
400
401Vea [CONTRIBUTING.md](CONTRIBUTING.md)
402
403## REGISTRO DE CAMBIOS
404
405Vea [CHANGELOG.md](CHANGELOG.md)
406
407## ¿Quiénes utilizan dotenv?
408
409[Estos módulos npm dependen de él.](https://www.npmjs.com/browse/depended/dotenv)
410
411Los proyectos que lo amplían suelen utilizar la [palabra clave "dotenv" en npm](https://www.npmjs.com/search?q=keywords:dotenv).
Note: See TracBrowser for help on using the repository browser.