Find DAWA-kald i koden med migrate-cli

Find og erstat DAWA-adresser i et projekt med npx @danadresse/migrate-cli, se hvad værktøjet ikke fanger, og stop nye DAWA-kald i CI.

5 min Niveau: Begynder ✓ Kode testet

Før du kan skifte fra DAWA, skal du vide, hvor koden kalder DAWA. I et ældre projekt kan adresserne ligge i kildekode, konfigurationsfiler, skabeloner og dokumentation. @danadresse/migrate-cli finder dem og kan erstatte dem med https://api.danadresse.dk.

Guiden viser, hvordan du kører værktøjet, hvad det præcis gør, hvad det overser, og hvordan du får CI til at fejle, hvis en DAWA-adresse dukker op igen.

1. Kør en tør gennemgang

Værktøjet kræver Node 18 eller nyere. Stå i projektets rod og kør:

Shell#dry-run
npx @danadresse/migrate-cli

Uden flag ændrer det ingenting. Det viser hver linje, der ville blive ændret, og hvordan den ville se ud bagefter:

Text#dry-run-output
Found 3 occurrence(s) in 2 file(s):

  src/adresse.ts
    12: const BASE = "https://dawa.aws.dk";
      → const BASE = "https://api.danadresse.dk";

  templates/checkout.html
    41: <script src="https://dawa.aws.dk/js/autocomplete/dawa-autocomplete2.min.js"></script>
      → <script src="https://api.danadresse.dk/js/autocomplete/dawa-autocomplete2.min.js"></script>

Run with --write to apply changes.

2. Kend flagene

KommandoVirkning
npx @danadresse/migrate-cliTør gennemgang af den aktuelle mappe
npx @danadresse/migrate-cli src/Tør gennemgang af src/
npx @danadresse/migrate-cli --target src/ eller -t src/Det samme
npx @danadresse/migrate-cli scan src/Det samme. scan er altid tør
npx @danadresse/migrate-cli --write eller -wSkriver ændringerne i filerne
npx @danadresse/migrate-cli rewrite src/Det samme som --write på src/
npx @danadresse/migrate-cli --key dawa_live_…Indsætter din nøgle i kodeeksemplerne til sidst
npx @danadresse/migrate-cli --fail-on-found eller --ciTør gennemgang, der afslutter med exit-kode 1, hvis der blev fundet noget. Til CI
npx @danadresse/migrate-cli --helpViser hjælpen

--key gør kun én ting: viser nøglen i eksemplerne. Værktøjet skriver aldrig nøglen ind i dine filer. Et ukendt flag giver en advarsel, men kørslen fortsætter.

3. Forstå, hvad der bliver erstattet

Værktøjet leder efter DAWA's domæner, med eller uden http:// eller https:// foran:

FundetBliver til
https://dawa.aws.dkhttps://api.danadresse.dk
https://api.dataforsyningen.dkhttps://api.danadresse.dk
https://cdn.dataforsyningen.dk efterfulgt af /dawa/assets/dawa-autocomplete2/https://api.danadresse.dk
Et domæne alene: dawa.aws.dk, //dawa.aws.dk/…, DAWA_HOST=api.dataforsyningen.dkapi.danadresse.dk

Kun domænedelen erstattes. Stien og parametrene bliver stående, så https://dawa.aws.dk/adresser?postnr=8000 bliver til https://api.danadresse.dk/adresser?postnr=8000. Det virker, fordi vi har de samme stier. http:// bliver til https://, og et domæne uden protokol forbliver uden protokol. Domæner, der bare ligner, fx x.api.dataforsyningen.dk, bliver ikke rørt.

Det gennemgår filer med disse endelser: js ts jsx tsx mjs cjs py php rb go java cs kt swift rs html vue svelte astro json yaml yml env toml ini conf cfg md rst txt, plus .env, .env.* (fx .env.production), workflows under .github/ og .gitlab-ci.yml. Mapperne node_modules, .git, .cache, .yarn, .venv, venv, dist, build, __pycache__, .next og vendor springes over.

Finder det DAWA's widget (dawa-autocomplete2.js eller .min.js), viser det til sidst det nye script-tag med ?key=. Se Fra dawa-autocomplete2 for, hvorfor nøglen her skal være en browsernøgle.

4. Det, værktøjet ikke fanger

Gennemgangen er bevidst simpel. Tjek selv disse steder:

  • Andre skjulte filer. Ud over .env*, .github/ og .gitlab-ci.yml bliver filer, hvis navn starter med punktum, ikke gennemgået, fx .npmrc eller .circleci/config.yml.
  • Sammensatte strenge. "https://dawa." + "aws.dk" eller en URL, der bygges op i flere trin.
  • Andre filtyper. Fx .xml, .properties, .gradle, .twig, .liquid, .cshtml, .razor, .sql og regneark.
  • Kode uden for repoet. Konfiguration i en database, i et CMS, i miljøvariabler på serveren eller i en tredjepartsplugin.

Og efter erstatningen mangler kaldene stadig en nøgle. Tilføj X-Api-Key der, hvor du laver HTTP-kald. Se Skift fra DAWA ved at ændre base-URL'en.

5. Søg selv med ripgrep eller git grep

En søgning med ripgrep dækker alle filtyper og alle skjulte filer:

Shell#ripgrep
rg -n --hidden -g '!.git' -g '!node_modules' \
  -e 'dawa\.aws\.dk' \
  -e 'api\.dataforsyningen\.dk' \
  -e 'cdn\.dataforsyningen\.dk/dawa' \
  .

git grep søger kun i filer, som Git kender, og det er tit det, du vil have:

Shell#git-grep
git grep -nE 'dawa\.aws\.dk|api\.dataforsyningen\.dk|cdn\.dataforsyningen\.dk/dawa'

Har du ingen af dem, virker almindelig grep -rnE med samme mønster, men så skal du selv udelukke node_modules.

6. Lad CI fejle, hvis DAWA kommer tilbage

Med --fail-on-found afslutter migrate-cli med exit-kode 1, så snart det finder en henvisning til DAWA. Det ændrer intet:

Shell#ci-cli
npx --yes @danadresse/migrate-cli@latest --fail-on-found

Det har ingen mulighed for at undtage filer, så en changelog, der med vilje nævner DAWA, får også buildet til at fejle. Har du brug for undtagelser, eller vil du ikke have Node i pipelinen, så brug et lille script i stedet. Det fejler, hvis en sporet fil nævner et af DAWA's domæner:

Shell#ci-check
#!/usr/bin/env bash
# Fejler, hvis koden igen henviser til DAWA. Kør fra repoets rod.
set -euo pipefail

pattern='dawa\.aws\.dk|api\.dataforsyningen\.dk|cdn\.dataforsyningen\.dk/dawa'

# Undtag filer, der med vilje nævner DAWA (fx denne fil og changelogs).
if git grep -nE "$pattern" -- . ':!scripts/check-no-dawa.sh' ':!CHANGELOG.md'; then
  echo "DAWA lukkede 1. oktober 2026. Brug https://api.danadresse.dk i stedet." >&2
  exit 1
fi
echo "Ingen DAWA-adresser fundet."

Gem det som scripts/check-no-dawa.sh og kald det fra din pipeline. I GitHub Actions:

YAML#github-actions
name: no-dawa
on: [push, pull_request]
jobs:
  check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: bash scripts/check-no-dawa.sh

git grep returnerer exit-kode 1, når det ikke finder noget. Derfor står kaldet i en if, så set -e ikke stopper scriptet på det gode udfald.

Næste skridt

Relaterede guides

Markdown-kilde Fejl i guiden? Skriv til os API-reference (Swagger)

Prøv det med en gratis nøgle

2 000 kald/måned på gratisplanen. Intet kreditkort.

Opret konto →