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/binresta$HOME/bin. Quanto vale$HOMEdipende 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.envpotrebbe 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.