Arbetsprocess för utveckling och publicering

Den här sidan beskriver hela arbetsprocessen för hur webbplatsen har utvecklats, automatiserats och publicerats. Fokus har varit att skapa en tydlig struktur där så mycket som möjligt sker automatiskt med hjälp av Node.js-baserade verktyg, samtidigt som projektet är enkelt att förstå och återskapa.

1. Versionshantering med Git och GitHub

Projektet versionshanteras med Git och lagras i ett publikt repository på GitHub. Arbetet är uppdelat i två grenar (branches):

Allt arbete sker på development-branchen. När en fungerande version är färdig merge:as den till main. Detta gör att halvfärdiga ändringar aldrig publiceras av misstag.

Regelbundna commits görs under arbetets gång, med tydliga och beskrivande commit-meddelanden som visar vad som har ändrats och varför.

2. Utvecklingsmiljö med Node.js, npm och Vite

Projektet använder Node.js och npm (Node Package Manager) för att hantera verktyg och automatiserade uppgifter.

När repot klonas kan hela projektet återskapas genom att köra:

npm install

Alla nödvändiga verktyg installeras då automatiskt via package.json.

Lokal utveckling

Under utveckling används Vite som utvecklingsserver. Den startas med:

npm run dev

Detta gör att webbplatsen körs via en lokal server i webbläsaren. Vite uppdaterar sidan automatiskt när filer sparas, vilket gör utvecklingsarbetet snabbare och mer effektivt.

3. Projektstruktur och filhantering

Projektet är uppdelat i tydliga delar för att skilja mellan arbetsfiler och publiceringsfiler.

Arbetsfiler

Publiceringsfiler

När projektet byggs skapas en mapp som heter:

Den innehåller den färdiga versionen av webbplatsen och är den enda mapp som publiceras.

4. HTML och navigation

Webbplatsen består av tre HTML-sidor:

Alla HTML-filer ligger i projektets rot, vilket gör att Vite kan inkludera dem som separata sidor i byggprocessen (så kallad multi-page build).

Navigationen använder relativa länkar (./) för att säkerställa att länkarna fungerar både lokalt och när webbplatsen publiceras via GitHub Pages.

5. CSS, JavaScript och interaktivitet

CSS används för layout, responsiv design och visuell presentation. Alla stilar är samlade i separata filer för bättre struktur.

JavaScript används för enklare funktionalitet, bland annat:

Detta gör att användaren tydligt ser vilken sida som är aktiv.

6. Bildhantering och automatiserad optimering

Bilder är ofta den största delen av en webbplats i filstorlek. För att förbättra prestanda används automatiserad bildoptimering.

Struktur för bilder

Bildhanteringen är uppdelad i två steg:

Optimeringen görs med Sharp (via sharp-cli) och npm-scripts definierade i package.json.

Npm-scripts för bilder

Följande scripts används:

Genom att köra:

npm run images

genereras alltid uppdaterade och optimerade bilder utan manuellt arbete.

7. Användning av public-mappen

För att säkerställa att bilder fungerar vid publicering används Vites public/-mapp.

Allt som placeras i public/:

Detta gör att bilder kan nås via enkla, relativa URL:er (t.ex. ./images/...) både lokalt och på GitHub Pages.

Användningen av public/-mappen är särskilt lämplig för statiska resurser som bilder, eftersom det garanterar att de inkluderas korrekt i publiceringsversionen.

8. Byggprocess (minifiering och publicering)

När projektet är redo för publicering körs:

npm run build

Detta gör att:

Vite hanterar hela byggprocessen utan att man behöver göra något manuellt.

9. Automatisk publicering med GitHub Actions

För att publicering ska ske automatiskt används GitHub Actions.

En workflow-fil (deploy.yml) ligger i .github/workflows/ och körs när kod pushas till main-branchen.

Workflowen:

  1. hämtar projektet från GitHub
  2. installerar dependencies
  3. kör bildoptimering
  4. bygger projektet
  5. publicerar dist/ till GitHub Pages

Detta gör att hela publiceringsprocessen sker automatiskt utan manuella steg.

10. Publicerad webbplats

Webbplatsen är publicerad via GitHub Pages och nås på:

https://coco10023.github.io/site/

Alla ändringar i main publiceras automatiskt på denna adress.

Sammanfattning

Projektet använder:

Denna arbetsprocess gör projektet lätt att återskapa, lätt att vidareutveckla, effektivt att publicera och tydligt strukturerat även för framtida projekt.

Detta är i praktiken samma typ av flöde som ofta används i moderna frontend-projekt.