100 % locale — i tuoi dati non lasciano mai il tuo browser

.env in JSON — impostazioni che il codice legge

Trasforma un file .env in JSON. Virgolette, commenti ed export sono gestiti: le impostazioni arrivano come oggetto che la tua app o la CI legge subito.

Istantaneo Privato Zero cookie
Indentazione

Input .env

Output JSON

Che cosa fa questo strumento

Un file .env diventa un oggetto JSON piatto.

# servizio
export PORT=8080
NAME="Ada Lovelace"
EMPTY=
{
  "PORT": "8080",
  "NAME": "Ada Lovelace",
  "EMPTY": ""
}

Le righe di commento e quelle vuote vengono saltate, un export iniziale viene tolto, e le virgolette attorno a un valore se ne vanno con lui. Tra virgolette doppie, \n e \t diventano a capo e tabulazione; tra virgolette singole tutto resta letterale, come in una shell.

Una variabile messa due volte viene rifiutata

PORT=8080
PORT=3000
Duplicate variable "PORT" on line 2: it already has a different value

Una shell tiene l’ultima assegnazione e non dice niente: il primo valore spariva e basta. In un .env fuso, modificato e copiato da un ambiente all’altro, quel silenzio costa caro: leggi il file, vedi PORT=8080 in alto, e il processo gira sulla 3000. Ora lo strumento si ferma e nomina la variabile e la riga. Due assegnazioni identiche non confessano nulla e passano ancora. Era un difetto vero, trovato scrivendo questa pagina e corretto.

Tutto è stringa

ID=007
ACTIVE=true
COUNT=3
{
  "ID": "007",
  "ACTIVE": "true",
  "COUNT": "3"
}

Una variabile d’ambiente è testo: è ciò che il sistema conserva e ciò che process.env restituisce. Tipizzare qui COUNT come numero sarebbe una supposizione, e tipizzare così ID gli costerebbe gli zeri. La conversione tiene il testo, e la tipizzazione resta dove il significato è noto — nel tuo codice.

Che cosa il formato non porta

  • L’espansione. PATH=$HOME/bin resta $HOME/bin. Quanto vale $HOME dipende da una macchina che questa pagina non vede.
  • L’annidamento. .env è un elenco piatto di nomi e valori; non ci sono sezioni né struttura da trovare.
  • Un commento dopo un valore tra virgolette. A="a #b" tiene il suo cancelletto, che sta dentro le virgolette. Dopo un valore nudo, # apre un commento e viene tagliato.
  • Un nome qualsiasi. Un nome è fatto di lettere, cifre, _ e ., e non comincia con una cifra — la regola che applica la shell stessa. Il resto viene rifiutato nominandolo, invece di finire in un JSON che nessun .env potrebbe riprendere.

Privato per progettazione

Tutto viene eseguito localmente nel browser con JavaScript. I tuoi dati non vengono mai caricati, quindi lo strumento è sicuro per contenuti sensibili e funziona anche offline.

Domande frequenti

Perché una variabile messa due volte viene rifiutata?
Perché uno dei due valori spariva senza una parola. Una shell tiene l’ultima assegnazione, e così faceva lo strumento — e un `.env` con `PORT` alla riga 3 e di nuovo alla 40 di solito denuncia una fusione andata male, non una decisione. Ora la conversione si ferma e nomina la variabile e la riga. Ripetere lo stesso valore non cambia nulla, quindi passa ancora.
Perché `PORT=8080` è una stringa nel JSON?
Perché una variabile d’ambiente è testo: è tutto ciò che il sistema operativo conserva. `8080`, `true` e `007` entrano come stringhe ed escono come stringhe; anche `process.env.PORT` lo è. Un convertitore che le tipizzasse deciderebbe al posto tuo e, strada facendo, trasformerebbe in numero un identificatore con gli zeri.
`$HOME` viene espanso?
No. `PATH=$HOME/bin` ti restituisce la stringa `$HOME/bin`, esattamente com’è scritta. L’espansione è compito della shell, dipende da un ambiente che questa pagina non vede, e indovinarla metterebbe nel tuo JSON un valore che nel tuo file non è mai esistito.

Convertitori correlati