/k9-sak-web

Frontend for K9-sak

Primary LanguageTypeScriptMIT LicenseMIT

k9-sak-frontend

Monorepo for Frontend kode for k9-sak.

code style: prettier

Komme i gang

Først installer node: brew install node Så installer yarn: brew install yarn

For å få hentet pakker fra GitHub sitt pakkeregistry må man sette opp lokal NPM med autentisering mot GitHub med en Personal Access Token (PAT) med read:packages-tilgang i lokalt utviklingsmiljø, før man gjør yarn install. GitHub har en guide på hvordan man gjør dette her.

TLDR er å opprette en GitHub PAT med kun read:packages-tilgang, enable SSO, og putte det i en egen ~/.yarnrc.yml-fil slik:

npmRegistries:
  https://npm.pkg.github.com:
    npmAlwaysAuth: true
    npmAuthToken: <token>

Merk at dette ikke skal sjekkes inn i versjonskontroll.

Når dette er gjort kan man kjøre dette på rot av repo'et for å kjøre opp lokalt utviklingsmiljø:

yarn install
yarn dev

Storybook brukes også til utvikling, startes med yarn storybook. Se ellers package.json for mer info.

Workspaces

Feature toggles

Aktiveres ved å definere en eller flere features i .env.developmentfil i envDir katalogen

Pakkeoppdatering

Avhengigheter som må ha samme versjon

Noen sub-pakker i dette prosjekt har avhengigheter til kode fra ft-frontend-saksbehandling.

Samtidig har disse sub-pakkene felles avhengigheter med koden i ft-frontend-saksbehandling. Dette gjør at oppdatering av disse avhengighetene må gjøres synkronisert, slik at vi unngår dupliserte avhengigheter. Viss versjonsnr ikke er nøyaktig likt vil yarn laste ned flere kopier og installere node_modules med disse nede i avhengighetstreet. Det kan føre til kompileringsfeil, eller kjøretidsfeil viss avhengighet som blir duplisert inneholder css.

Så ved oppdatering av følgende avhengigheter må man samtidig sørge for at alle pakker som starter på @navikt/ft- blir oppdatert til en versjon som har samme versjon av disse avhengighetene.

  • @navikt/aksel-icons
  • @navikt/ds-css
  • @navikt/ds-react
  • @navikt/ds-tailwind
  • @navikt/ft-plattform-komponenter
  • react-hook-form
  • react-router-dom

Eventuelt må man overstyre versjonene med resolutions i package.json slik at de blir like på tvers av avhengighetene.

Modernisering med packages/v2

For å prøve å skape en mer robust kodebase har vi starta å flytte/skrive om en del eldre kode i packages/v2 katalogen.

Kode som legges inn her blir kontrollert av en strengere tsconfig.json. Gammel kode kan importere fra packages/v2, men det motsatte skal ikke skje, kode under packages/v2 skal aldri importere kode som ikke ligger under v2. På denne måten får vi gjort en gradvis overgang til bedre kontrollert typescript.

Mer info om dette i v2/README

Bygg og utrulling

Ved merge av PR til master branch blir koden bygd inn i et Docker image og rulla ut til testmiljø på https://k9.dev.intern.nav.no. Etter godkjenning i pipeline blir samme Docker image rulla ut i produksjon på https://k9.intern.nav.no/.

Vi har også støtte for å rulle ut mer eksperimentelle endringer for test til https://k9-next1.dev.intern.nav.no. Dette skjer automatisk ved merge av PR til dev-next1 branch. Denne utrulling lever i 10 dager. Hvis det går lenger tid mellom hver nye utrulling her stenges servicen ned inntil det skjer en ny utrulling.

Storybook

Katalog med brukergrensesnitt-komponenter blir publisert i storybook på https://navikt.github.io/k9-sak-web/

For NAV-ansatte

Interne henvendelser kan sendes via Slack i kanalen #sif-teknisk.