@oslokommune/punkt-migrate
v19.0.4
Published
Migreringsverktøy for brytende endringer i Punkt
Readme
punkt-migrate
Kommandolinjeverktøy som migrerer kodebasen din gjennom brytende endringer i Punkt.
Bruk
Verktøyet tar én sti: mappa koden din ligger i. Den heter ./src i mange prosjekter, men
kan like gjerne hete ./app eller ./resources/views. Det går gjennom alt under stien, så
det enkleste er som regel å peke på rota. node_modules, dist, build og andre
byggemapper hoppes over uansett.
npx @oslokommune/punkt-migrate@19 . --dry-run
npx @oslokommune/punkt-migrate@19 .Versjonen forteller hvilken Punkt-versjon du migrerer til. @19 migrerer fra 18.x til 19.
Kjør alltid --dry-run først. Verktøyet nekter å skrive hvis du har endringer som ikke er
sjekket inn, med mindre du sender --force.
Breakpoints og spacing migreres i samme kjøring. Klassenavn som mb-size-24--phablet-up
bærer både en spacing-verdi og et breakpoint, så to separate gjennomkjøringer måtte blitt
enige om en mellomtilstand som aldri finnes på disk.
Hva verktøyet ser på
| Sted | Hva som skjer |
| ----------------------- | ---------------------------------------------------------------------- |
| class og className | Klassenavn skrives om. |
| classNames(), clsx(), classMap(), Vue sin :class | Strenglitteraler skrives om. Kollisjoner verktøyet ikke kan løse, flagges. |
| Template-literaler | Skrives om når hele navnet er statisk. Er navnet satt sammen i kode, flagges det. |
| SCSS | bp('phablet-up') blir bp-up(36rem), intervallnavn blir media queries, og map.get($spacing, 'size-52') snappes til nærmeste verdi som finnes. |
| <style lang="scss"> | Samme som SCSS. Gjelder .vue, .astro, .svelte og .html. |
Verktøyet sier også fra hvis kodebasen bruker responsive spacing-klasser. De overlever
migreringen, men ligger fra Punkt 19 i pkt-spacing-responsive, som må hentes inn separat.
Gjør du ikke det, slutter klassene å virke uten at noe feiler.
Bygget Punkt-CSS som ligger i repoet hoppes over, med beskjed. Den erstatter du ved å oppgradere pakka.
Flagg
| Flagg | Betydning |
| ----------------- | -------------------------------------------------------------- |
| --dry-run | Vis hva som ville skjedd. Skriver ingenting. |
| --report <fil> | Skriv full rapport som JSON. |
| --force | Kjør selv om du har endringer som ikke er sjekket inn. |
| --ext <liste> | Overstyr hvilke filendelser som skannes. |
| --ignore <glob> | Ekskluder filer. node_modules og dist er alltid ekskludert. |
| -h, --help | Vis hjelpeteksten. |
Exit-koder
| Kode | Betydning |
| ---- | ---------------------------------------------------------------- |
| 0 | Alt ble migrert automatisk. |
| 1 | Noe krever manuell vurdering. Se Flagget i rapporten. |
| 2 | Feil bruk. |
Verktøyet er idempotent: kjører du det to ganger, gjør den andre kjøringen ingenting.
Node-versjon
Verktøyet krever Node 18.18 eller nyere, altså lavere enn resten av Punkt-monorepoet, som bygger med Node 22+. Det er med vilje: de som trenger å migrere ligger ofte lengst bak, og verktøyet har null kjøretidsavhengigheter nettopp for å slippe å utelukke dem.
Migreringsguide
Full gjennomgang av hva som endrer seg i Punkt 19, og hva du må se på selv, ligger på punkt.oslo.kommune.no.
