SKILL.md
Bump shared dependencies
Denne skillen hjelper deg bumpe React, React-DOM og Scheduler til ny versjon i CDN-repoet.
Hva du trenger fra utvikleren
Når utvikleren ber om å sjekke eller bumpe React og/eller React-DOM, sjekk alltid alle tre pakker (react, react-dom, scheduler) — de henger sammen.
Still disse spørsmålene før du starter:
- React-versjon (påkrevd) — f.eks.
19.2.6. Hvis utvikleren ikke vet, kjør Steg 1 for å finne siste versjon. - Scheduler-versjon (valgfri) — f.eks.
0.28.0. Hvis ikke oppgitt, kjør Steg 1 for å sjekke om ny versjon finnes.
React og React-DOM bruker alltid samme versjon.
Steg 1 — Finn siste versjon fra esm.sh
Sjekk alltid alle tre pakker:
curl --noproxy '*' -s "https://esm.sh/react" | head -1
# Output: /* esm.sh - [email protected] */ ← dette er siste versjon
curl --noproxy '*' -s "https://esm.sh/react-dom" | head -1
# Output: /* esm.sh - [email protected] */
curl --noproxy '*' -s "https://esm.sh/scheduler" | head -1
# Output: /* esm.sh - [email protected] */ ← sjekk om nyere enn det som finnes
Parse versjonen fra kommentaren. Sammenlign med nåværende versjoner i repoet (se AGENTS.md eller sjekk siste mappe):
ls packages/react/ | sort -V | tail -1 # Nåværende React-versjon
ls packages/scheduler/ | sort -V | tail -1 # Nåværende Scheduler-versjon
Hvis esm.sh-versjonen er nyere enn det som finnes i repoet, fortsett med bumpen. Hvis ikke, informer utvikleren om at repoet allerede er oppdatert.
Steg 2 — Opprett versjonsmapper
mkdir -p packages/react/{REACT_VERSJON}
mkdir -p packages/react-dom/{REACT_VERSJON}
mkdir -p packages/scheduler/{SCHEDULER_VERSJON}
Hopp over scheduler-mappen hvis versjonen allerede finnes.
Steg 3 — Hent bundler fra esm.sh (to-trinns prosess)
esm.sh returnerer først en barrel-fil som viser stien til den faktiske bundelen. Du må hente den faktiske filen.
3.1 — Finn faktiske stier
curl --noproxy '*' -s "https://esm.sh/react@{REACT_VERSJON}"
Output:
/* esm.sh - [email protected] */
export * from "/[email protected]/es2022/react.mjs";
export { default } from "/[email protected]/es2022/react.mjs";
Stien du trenger er det som står i from "..." — legg den etter https://esm.sh.
Gjør det samme for alle pakker:
curl --noproxy '*' -s "https://esm.sh/react@{REACT_VERSJON}" # → /react@X/es2022/react.mjs
curl --noproxy '*' -s "https://esm.sh/react@{REACT_VERSJON}/jsx-runtime" # → /react@X/es2022/jsx-runtime.mjs
curl --noproxy '*' -s "https://esm.sh/react-dom@{REACT_VERSJON}" # → /react-dom@X/es2022/react-dom.mjs
curl --noproxy '*' -s "https://esm.sh/react-dom@{REACT_VERSJON}/client" # → /react-dom@X/es2022/client.mjs
curl --noproxy '*' -s "https://esm.sh/scheduler@{SCHEDULER_VERSJON}" # → /scheduler@X/es2022/scheduler.mjs
3.2 — Hent de faktiske bundlene
Bruk stiene fra 3.1 til å hente det faktiske innholdet:
# React
curl --noproxy '*' -s "https://esm.sh/react@{REACT_VERSJON}/es2022/react.mjs" -o packages/react/{REACT_VERSJON}/react.mjs
curl --noproxy '*' -s "https://esm.sh/react@{REACT_VERSJON}/es2022/jsx-runtime.mjs" -o packages/react/{REACT_VERSJON}/jsx-runtime.mjs
# React-DOM
curl --noproxy '*' -s "https://esm.sh/react-dom@{REACT_VERSJON}/es2022/react-dom.mjs" -o packages/react-dom/{REACT_VERSJON}/react-dom.mjs
curl --noproxy '*' -s "https://esm.sh/react-dom@{REACT_VERSJON}/es2022/client.mjs" -o packages/react-dom/{REACT_VERSJON}/client.mjs
# Scheduler (kun hvis ny versjon)
curl --noproxy '*' -s "https://esm.sh/scheduler@{SCHEDULER_VERSJON}/es2022/scheduler.mjs" -o packages/scheduler/{SCHEDULER_VERSJON}/scheduler.mjs
Merk: Stien (f.eks.
es2022) kan variere mellom versjoner. Sjekk alltid barrel-filen i steg 3.1 for korrekt sti.
Steg 4 — Skriv om import-stier i react-dom.mjs
Åpne packages/react-dom/{REACT_VERSJON}/react-dom.mjs.
Finn den første import-linjen (starter med import * as __0$). Erstatt den med:
import * as __0$ from "https://cdn.nav.no/okonomi/sokos-shared-dependencies/packages/react/{REACT_VERSJON}/react.mjs";
Resten av filen forblir uendret.
Steg 5 — Skriv om import-stier i client.mjs
Åpne packages/react-dom/{REACT_VERSJON}/client.mjs.
Finn de tre første import-linjene (starter med import * as 0$, 1$, __2$). Erstatt dem med:
import * as __0$ from "https://cdn.nav.no/okonomi/sokos-shared-dependencies/packages/scheduler/{SCHEDULER_VERSJON}/scheduler.mjs";
import * as __1$ from "https://cdn.nav.no/okonomi/sokos-shared-dependencies/packages/react/{REACT_VERSJON}/react.mjs";
import * as __2$ from "https://cdn.nav.no/okonomi/sokos-shared-dependencies/packages/react-dom/{REACT_VERSJON}/react-dom.mjs";
Resten av filen forblir uendret.
Steg 6 — Verifiser
Sjekk at:
- ✅
react-dom.mjssin import peker påreact/{REACT_VERSJON}/react.mjs - ✅
client.mjssine imports peker på:
- react-dom/{REACTVERSJON}/react-dom.mjs - react/{REACTVERSJON}/react.mjs - scheduler/{SCHEDULER_VERSJON}/scheduler.mjs
- ✅ Alle filer starter med
/ esm.sh - {pakke}@{versjon} / - ✅ Alle fem filer finnes:
react.mjs,jsx-runtime.mjs,react-dom.mjs,client.mjs,scheduler.mjs
Steg 7 — Oppdater AGENTS.md
Oppdater tabellen «Nåværende versjoner» i AGENTS.md:
| Pakke | Versjon |
|-------|---------|
| react | {REACT_VERSJON} |
| react-dom | {REACT_VERSJON} |
| scheduler | {SCHEDULER_VERSJON} |
Eksempel: Slik utleder du versjoner dynamisk
Ikke hardkod versjoner. Bruk alltid steg 1 til å finne gjeldende og nyeste versjon:
# Nåværende versjon i repoet
CURRENT=$(ls packages/react/ | sort -V | tail -1)
# Nyeste versjon fra esm.sh
LATEST=$(curl --noproxy '*' -s "https://esm.sh/react" | head -1 | grep -o '[0-9]\+\.[0-9]\+\.[0-9]\+')
echo "Nåværende: $CURRENT"
echo "Tilgjengelig: $LATEST"
Bruk $LATEST som {REACT_VERSJON} i alle påfølgende steg. Sjekk scheduler på samme måte:
CURRENT_SCHEDULER=$(ls packages/scheduler/ | sort -V | tail -1)
LATEST_SCHEDULER=$(curl --noproxy '*' -s "https://esm.sh/scheduler" | head -1 | grep -o '[0-9]\+\.[0-9]\+\.[0-9]\+')
Commit-melding
⚠️ Agenten skal ikke kjøre
git commitellergit push. Presenter forslag til commit-melding og la utvikleren committe selv.
Forslag til commit-melding:
chore: bump React til {REACT_VERSJON}
Legger til React {REACT_VERSJON}, React-DOM {REACT_VERSJON} og Scheduler {SCHEDULER_VERSJON}
i CDN. Import-stier skrevet om til Nav CDN URL-er.