Jøkul
Artikler

Hvordan kode i Jøkul

En teknisk guide for deg som vil bidra med kode. Lær hvordan du setter opp utviklingsmiljøet, gjør endringer lokalt og sender inn en pull request på Github.

Hva er annerledes med Jøkul?

Å programmere i Jøkul ligner på vanlig frontend-utvikling, men med en viktig forskjell: du lager biblioteker som andre applikasjoner bruker, ikke en frittstående app. I praksis merker du lite til dette med mindre du jobber med selve infrastrukturen eller lager helt nye pakker.

Utviklingsmiljø

For å kunne bidra med kode til Jøkul, må du først ha de riktige verktøyene installert.

Forutsetninger

  • Node.js (vi anbefaler nyeste LTS-versjon)
  • pnpm (brukes som package manager)
  • Git (version 2.0.0 eller nyere)

Sånn gjør du endringer i pakkene

Eksempelet tar utgangspunkt i at Jøkul er på versjon 2.0

  1. Velg hvilken versjon endringen skal gjelde fra
    1. Hvis du vil gjøre endring på nyeste versjon av pakka kan du bruke main-branchen (tilsvarer 2.0 i skrivende stund).
    2. Hvis du vil at endringen skal gjelde fra en tidligere major-versjon tar du utgangspunkt i branchen som tilsvarer versjonen (for eksempel jokul-1-x for versjon 1). Husk å gjøre endringene på main-branchen også, for at alle skal få nytte av endringen du gjør.
  2. Klon Jøkul-biblioteket ned på maskinen din.
    1. Hvis du ikke har skrivetilgang til repoet, må du først opprette en fork og klone denne i stedet.
  3. Installer avhengighetene med pnpm boot
  4. Lag en branch med et godt navn. Eksempelvis git checkout -b feat/0000-min-nye-feature
  5. Gjør endringene du vil.
  6. Send endringene med pnpm changeset. Changesets er ansvarlig for å versjonere pakkene våre, og vil guide deg gjennom prosessen. Det du trenger er å vite er hvor stor endringen er for dem som bruker det du gjør endringer på, det er tre nivåer:
    1. Major: For endringer som ikke er bakoverkompatible, kalt breaking changes. Dette er ikke så skummelt som det kan høres ut, men det krever en god forklaring på hva en bruker skal gjøre for å oppdatere biblioteket.
    2. Minor: For feat (nye funksjoner som er bakoverkompatible).
    3. Patch: For fix (feilrettinger som er bakoverkompatible).
  7. Lag en pull request til branchen du valgte i første steg.

Når du skal release ny (major) versjon

Eksempelet tar utgangspunkt i at Jøkul er på versjon 1.6.1, og skal oppgraderes til versjon 2.0. Før du drar den inn i main-branchen må du gjøre følgende:

  1. Lag en ny branch fra main med navn jokul-1.x.
    1. OBS: Pass på at den nye branchen ikke inneholder endringene som er breaking, da må du rebase fra main uten de endringene.
    2. Dette er branchen du kommer til å bruke for å gjøre endringer på 1.6.1, som beskrevet i forrige seksjon.
  2. I jokul-1.x-branchen må du gjøre endringer på
    1. package.json: Legg til "--tag version-1" i release scriptet. 1 tilsvarer her versjonen som blir oppdatert.
    2. pull-request.md: Endre branch navnet til å peke på det nye navnet.
    3. release.yaml:
      1. Fjern main-to-external steget.
      2. I "Publiser pakker til github packages"-steget må du endre run-kommandoen til å peke på den nye branchen, med den nye taggen.
    4. Du kan se hele diffen i dette viewet (her er det også med endringene som er gjort i etterkant.

Lag en commit

For å dokumentere endringer på en måte som automatiserer versjonering og generering av changelogs, bruker vi verktøyet Changesets.

Changesets lar oss definere nøyaktig hvilke pakker som er påvirket av en endring og hva slags versjonsoppdatering (major, minor, eller patch) endringen medfører.

Slik bruker du det:

  1. Start Changeset-veiviseren
    Når du har gjort kodeendringene dine, kjører du følgende kommando i terminalen for å starte en interaktiv veiviser: pnpm changeset
  2. Velg pakker
    Veiviseren vil først liste opp alle pakkene i monorepoet. Bruk piltastene og mellomrom for å velge de pakkene du har gjort endringer i. Trykk Enter når du er ferdig.
  3. Velg versjonstype
    For hver valgte pakke vil du bli spurt om hva slags versjonshopp endringen skal føre til. Du kan velge mellom:
    1. Major: For BREAKING CHANGES (endringer som ikke er bakoverkompatible).
    2. Minor: For feat (nye funksjoner som er bakoverkompatible).
    3. Patch: For fix (feilrettinger som er bakoverkompatible).
  4. Skriv en oppsummering
    Til slutt skriver du en kort, men dekkende oppsummering av endringen din. Denne meldingen vil bli brukt til å generere changelogen for de berørte pakkene.

    Trykk Enter for å bekrefte.

Når veiviseren er ferdig, har det blitt opprettet en ny fil i .changeset-mappen. Denne filen inneholder informasjonen du ga, og skal sjekkes inn i Git sammen med kodeendringene dine.

Commit endringene dine

  • git add .
  • git commit -m "feat(button): <melding>"

Del branchen din

Nå kan du pushe endringen din og åpne en pull request.

  • git push --set-upstream origin feat/0000-min-nye-feature

Pull requests

Pull requests (PR) lager du på GitHub. Vanligvis er det main-branchen du setter som base, og branchen med endringene dine du setter som compare.

Hvordan kode i Jøkul