Keskkonnamuutujad
Õpieesmärgid
Selle peatüki lõpuks peaks õppija:
- mõistma, mis on keskkonnamuutuja
- oskama lugeda keskkonnamuutujat terminalis
- mõistma
PATHja.envfaili erinevust - teadma, miks paroole ja võtmeid ei lisata GitHubi
- oskama kasutada
.env.examplefaili mõtet
1. Mis on keskkonnamuutuja?
Keskkonnamuutuja on nime ja väärtuse paar, mida programm saab käivitumisel kasutada.
Näiteks:
NODE_ENV=development
PORT=3000
API_URL=https://example.comKeskkonnamuutujaid kasutatakse selleks, et kood ei peaks kõike enda sisse kirjutama. Sama kood võib töötada eri keskkondades erineva seadistusega.
Näiteks:
- arendaja arvutis kasutatakse testandmebaasi
- kooli serveris kasutatakse teist aadressi
- päris rakenduses kasutatakse päris API võtit
Kood jääb samaks, aga keskkond annab erinevad väärtused.
2. Shelli keskkonnamuutujad
Terminalis saab muutuja väärtust vaadata käsuga echo.
Näide:
echo $SHELL
echo $PATHAjutise keskkonnamuutuja saab määrata nii:
MY_NAME="Mari"
echo $MY_NAMESee kehtib ainult praeguses terminaliaknas. Kui terminal sulgeda, kaob see väärtus ära.
Kui tahad, et väärtus oleks olemas iga kord, lisatakse see shelli seadistusfaili, näiteks ~/.zshrc.
3. PATH on eriline keskkonnamuutuja
PATH ütleb shellile, millistest kaustadest programme otsida.
Kui kirjutad:
nodesiis shell kontrollib PATH muutujas olevaid kaustu ja otsib sealt programmi nimega node.
PATH vaatamine:
echo $PATHProgrammi asukoha kontroll:
which node
which npmKui shell programmi ei leia, ei tähenda see alati, et programmi pole arvutis olemas. Mõnikord tähendab see, et programmi asukoht ei ole PATH muutujas.
4. .env fail
Projektides kasutatakse sageli .env faili. See on fail, kuhu pannakse lokaalsed keskkonnamuutujad.
Näide:
PORT=3000
API_URL=http://localhost:3000.env fail ei ole sama asi nagu ~/.zshrc.
~/.zshrcseadistab sinu shelli.envseadistab konkreetset projekti
.env fail asub tavaliselt projekti juurkaustas.
5. Saladused ja turvalisus
.env failis võivad olla tundlikud väärtused:
- paroolid
- API võtmed
- andmebaasi aadressid
- ligipääsutokenid
Seetõttu ei tohiks .env faili GitHubi lisada.
.gitignore failis peaks olema:
.envOluline
Kui parool või API võti jõuab GitHubi, tuleb seda käsitleda lekkinud saladusena. Faili hilisem kustutamine ei pruugi olla piisav, sest väärtus võib jääda Git ajalukku.
6. .env.example
Kui .env faili ei lisata GitHubi, tekib küsimus: kuidas teine arendaja teab, milliseid muutujaid projekt vajab?
Selleks kasutatakse faili .env.example.
Näide:
PORT=3000
API_URL=.env.example näitab, millised muutujad peavad olemas olema, aga ei sisalda päris saladusi.
Töövoog:
- klooni projekt
- kopeeri
.env.examplefail nimega.env - täida vajalikud väärtused
- käivita projekt
7. Keskkonnamuutujad JavaScriptis
Node.js projektis saab keskkonnamuutujaid lugeda process.env kaudu.
Näide:
const port = process.env.PORT || 3000;See tähendab: kasuta PORT väärtust, kui see on olemas. Kui seda pole, kasuta väärtust 3000.
Esimesel aastal on oluline mõista põhimõtet: keskkonnamuutujad võimaldavad projekti seadistada ilma koodi muutmata.
8. Kontrollküsimused vea korral
Kui projekt ütleb, et keskkonnamuutuja puudub, kontrolli:
- kas
.envfail on olemas - kas oled projekti juurkaustas
- kas muutuja nimi on õigesti kirjutatud
- kas
.env.examplenäitab vajalikke muutujaid - kas projekt tuleb peale
.envmuutmist uuesti käivitada
Muutuja nimi peab olema täpne. API_URL ja APIURL ei ole sama asi.