Kildekode og publisering av npm-moduler til frontend-moduler brukt i FP og K9
Storybook hostes på github pages og releases automatisk ved hver push til main.
Kjør yarn install på rot.
Bygg så alle pakkene ved å kjøre yarn build. (Kan også bygges enkeltvis ved å gå inn i pakkene og kjøre samme
kommando.)
Utviklingsmiljø i Storybook kan kjøres opp ved å kjøre yarn storybook i de pakkene som er satt opp med Storybook.
En skal alltid utvikle på branch og lage pull request på GitHub. Denne kan mergest til main når testene har gått grønt.
Dette prosjektet bruker GitHub Package Registry for npm-pakker. For å installere dependencies og publisere pakker trenger du å autentisere mot GitHub Package Registry.
Du kan autentisere på en av følgende måter:
Sett environment variabelen NPM_AUTH_TOKEN med en GitHub Personal Access Token (PAT):
export NPM_AUTH_TOKEN=<din-token>Legg til følgende i ~/.yarnrc.yml:
npmScopes:
navikt:
npmAlwaysAuth: true
npmRegistryServer: 'https://npm.pkg.github.com'
npmAuthToken: '<din-token>'- Gå til GitHub Settings > Developer settings > Personal access tokens
- Opprett en token med
read:packages-tilgang (ellerwrite:packageshvis du skal publisere) - Enable SSO for NAV-organisasjonen
Viktig: Tokens skal ikke sjekkes inn i versjonskontroll.
Se GitHubs dokumentasjon for mer informasjon.
Publisering av npm-moduler skjer automatisk via GitHub Actions når nye tags pushes til main.
Du kan publisere pakker ved hjelp av GitHub Copilot-agenten og skillen
publiser-pakker. Åpne Copilot Chat og skriv f.eks.:
«Publiser pakker» eller «release ft-frontend-saksbehandling»
Copilot vil da kjøre gjennom alle stegene automatisk: hente siste main, installere avhengigheter,
bygge pakkene, starte interaktiv versjonering og vente på at GitHub Actions fullfører publiseringen.
Skillen publiser-pakker håndterer også feilsituasjoner og viser relevante logger ved behov.
Prosessen er delt i tagging (lokalt) og publisering (gjennom GitHub Actions) for å:
- Tillate semantisk versjonering av pakke-endringer med
lerna version - Unngå at utviklere trenger et npm-token med
writeaccess
-
Hent siste endringer fra main
git checkout main git pull
-
Installer dependencies
yarn
-
Opprett og push tags
yarn tag
Dette kjører interaktiv versjonering via Lerna som:
- Lar deg velge versjonsnummer for endrede pakker
- Oppretter signerte Git-tags
- Pusher tags til GitHub
- Verifiser publisering
-
Nye tags finner du her
-
GitHub Actions workflow starter automatisk og publiserer pakkene: Se publish workflow
-
Publiserte pakker finner du her
-
Tips: Hvis du skal publisere en ny pakke kan det hende at workflowen feiler å publisere. I såfall sjekk opp pakken på https://github.com/orgs/navikt/packages > finn pakken > Package settings > Package visibility > Endre til public
For å bruke de nye pakkene i fp-frontend eller k9-sak-web:
yarn upgrade-interactiveDette gir deg en interaktiv meny for å velge hvilke pakker som skal oppgraderes.
Dette gir deg mulighet til å teste lokale endringer i ft-frontend-saksbehandling før publisering.
-
Konverter workspace dependencies
yarn transform-to-semver
Dette endrer "workspace:^" til semantisk versjon i package.json-filene
-
Installer dependencies
yarn install
-
Start lokal pakke-utvikling
- Gå til aktuell pakke
- Kjør
yarn dev - Dette bygger pakken automatisk ved endringer og legger resultatet i dist-folderen
- Koble pakken til konsument-repoet
- I konsument-repoet (f.eks. fp-frontend eller k9-sak-web), rediger
package.json - Endre dependency til å bruke portal:
"@navikt/ft-prosess-beregningsgrunnlag": "portal:../../../ft-frontend-saksbehandling/packages/prosess-beregningsgrunnlag"
- Kjør
yarn installi konsument-repoet
- Start applikasjon
- Start opp applikasjonen som normalt
- Endringer i ft-frontend-saksbehandling vil nå reflekteres automatisk
Viktig: Husk å reversere endringene før du committer:
yarn transform-to-workspaceSpørsmål knyttet til koden eller prosjektet kan stilles som issues her på GitHub
Interne henvendelser kan sendes via Slack i kanalen #teamforeldrepenger.
Dette repoet bruker GitHub Copilot til å generere kode.