Failisüsteem ja projektistruktuur
Õpieesmärgid
Selle peatüki lõpuks peaks õppija:
- mõistma, mis on failisüsteem ja projektikaust
- oskama eristada absoluutset ja suhtelist teed
- mõistma, miks käske peab käivitama õiges kaustas
- tundma ära levinud projektikaustu ja faile
- mõistma, miks osa faile on peidetud
1. Failisüsteem kui arvuti korrastus
Failisüsteem on viis, kuidas operatsioonisüsteem hoiab faile ja kaustu korras. Kui kirjutad koodi, ei tööta sa ainult ühe failiga. Tavaliselt töötad projektiga, kus on mitu faili, kausta, seadistusfaili ja sõltuvust.
Arendaja jaoks on oluline aru saada:
- kus projekt arvutis asub
- millises kaustas terminal praegu on
- millised failid kuuluvad projekti juurde
- milliseid faile ei tohiks käsitsi muuta või GitHubi lisada
Kui projektikaust on segamini, muutub ka arendamine segaseks. Failisüsteemi mõistmine aitab vältida olukordi, kus käsk käivitatakse vales kohas või muudetakse vale projekti faile.
2. Projektikaust ja projekti juur
Projektikaust on kaust, kus ühe rakenduse või harjutuse failid koos asuvad.
Projekti juur ehk project root on selle projekti kõige ülemine kaust. Seal asuvad tavaliselt projekti kõige tähtsamad failid, näiteks:
package.jsonREADME.md.gitignore.envsrc/
Näide:
my-app/
├── package.json
├── README.md
├── .gitignore
├── src/
│ └── main.js
└── node_modules/Selles näites on projekti juur my-app/.
Terminalis saab kontrollida, kas oled õiges kohas:
pwd
lsKui näed package.json faili, oled tõenäoliselt JavaScripti projekti juures.
3. Absoluutne ja suhteline tee
Faili või kausta asukohta nimetatakse teeks.
Absoluutne tee algab failisüsteemi algusest või kasutaja kodukaustast ning kirjeldab kogu teekonda failini.
Näide macOS-is:
/Users/student/projects/my-app/src/main.jsSuhteline tee algab sellest kaustast, kus sa parasjagu oled.
Kui oled kaustas:
/Users/student/projects/my-appsiis faili src/main.js suhteline tee on:
src/main.jsSuhtelisi teid kasutatakse projektides palju, sest projekt võib asuda eri arvutites eri kohas, aga projekti sisemine struktuur jääb samaks.
4. Miks käsu käivitamise kaust loeb?
Paljud käsud eeldavad, et oled projekti juurkaustas.
Näiteks:
npm installSee käsk otsib praegusest kaustast faili package.json. Kui käivitad käsu vales kaustas, ei leia npm projekti infot üles.
Sama kehtib paljude tööriistade kohta:
git statusnäitab infot selle Git projekti kohta, mille kaustas olednpm run devotsib käskupackage.jsonfailistnvm usevõib otsida.nvmrcfaili
Hea harjumus
Kui käsk ei tööta, kontrolli esimese asjana pwd ja ls abil, kas oled õiges projektikaustas.
5. Levinud failid ja kaustad
JavaScripti projektides näeb tihti selliseid faile ja kaustu:
src/- lähtekood ehk kood, mida arendaja kirjutabpublic/- avalikud failid, näiteks pildid või staatilised failidnode_modules/- npm-i paigaldatud sõltuvuseddist/võibuild/- valmis ehitatud rakenduspackage.json- projekti nimi, skriptid ja sõltuvusedpackage-lock.json- täpsed sõltuvuste versioonidREADME.md- projekti kirjeldus ja käivitamise juhend.gitignore- failid ja kaustad, mida Git ei peaks jälgima.env- keskkonnamuutujad ja lokaalsed seadistused.nvmrc- projekti soovitatud Node.js versioon
Kõik failid ei ole võrdsed. Mõnda faili muudetakse iga päev, mõni on automaatselt genereeritud ja mõnda ei tohi turvalisuse tõttu jagada.
6. Mida ei tohiks tavaliselt GitHubi panna?
GitHubi ei tohiks lisada faile, mis on suured, automaatselt taastatavad või sisaldavad saladusi.
Tavaliselt ei lisata:
node_modules/dist/build/.env- paroolid ja API võtmed
- operatsioonisüsteemi ajutised failid
Selleks kasutatakse faili .gitignore.
Näide:
node_modules/
dist/
.envKui keegi teine projekti alla laadib, saab ta sõltuvused uuesti paigaldada:
npm installSeetõttu pole mõtet node_modules/ kausta GitHubi lisada.
7. Peidetud failid
Unix-laadsetes süsteemides algavad peidetud failid punktiga.
Näited:
.gitignore.env.nvmrc.zshrc
Peidetud failid ei ole maagilised. Need on tavalised failid, mida failihaldur või ls vaikimisi ei pruugi näidata.
Terminalis näed neid käsuga:
ls -laArenduses on peidetud failid olulised, sest neis hoitakse sageli projekti või tööriistade seadistust.