Skip to content

feat: contrôle statique des liens et images (#345) - #346

Merged
mortifia merged 1 commit into
mainfrom
345-link-checker
Oct 25, 2026
Merged

mortifia merged 1 commit into
mainfrom
345-link-checker

Conversation

@ohugonnot

@ohugonnot ohugonnot commented Oct 25, 2026 •

Copy link
Copy Markdown
Contributor

Closes #345
Closes #70 (la liste demandée : npm run test:links -- -v donne chaque lien cassé avec fichier:ligne)

Quoi

  • scripts/check_links.py : contrôle statique des liens .md et des images, sans build (≈ 0,5 s)
  • npm run test:links (options : -v détail fichier:ligne, --lang fr, --fail-on antislash,...)
  • .nvmrc : Node 20, aligné sur le Dockerfile
  • README : deux lignes pour l'usage

Aucun changement sur le site : c'est l'outil qui servira de test avant / après pour les prochains correctifs (liens à antislash → #117, traductions → #266 / #268).

Comment c'est testé

  1. Jeu de cas connus (dossier temporaire) : lien relatif, ancre, chemin absolu, titre, antislash, cible absente, erreur de casse, image présente/absente, lien externe, ancre seule, lien dans un bloc de code, page traduite pointant vers une page non traduite (repli sur docs/).
    → les 4 erreurs attendues sont détectées, aucun faux positif.
  2. Dépôt réel sur main (70950e2) :
[en]   587 liens en erreur : antislash=483, cible-absente=66, antislash+absente=34, image-absente=4
[fr]   683 liens en erreur : antislash=499, cible-absente=94, antislash+absente=84, image-absente=6
[ru]   485 liens en erreur : antislash=386, antislash+absente=54, cible-absente=45
[de]   385 liens en erreur : antislash=337, cible-absente=36, antislash+absente=9, image-absente=3

Exemple confirmé sur le site en ligne : le lien « Captain » de la page Jobs pointe vers /HowToPlay/Jobs/\3_HowToPlay\Jobs\Command_roles\Captain.md.

À savoir

npm run test:links renvoie aujourd'hui le code 1, puisque les erreurs existent. Il n'est pas encore branché en CI : on l'activera catégorie par catégorie (--fail-on) au fil des corrections.

scripts/check_links.py résout les liens .md et les images comme
Docusaurus (dossier traduit d'abord, puis repli sur docs/) et les
classe par catégorie : antislash, casse, cible absente, image absente.
Environ 0,5 s, sans build. Exposé via `npm run test:links`.

--fail-on permet de ne faire échouer que certaines catégories, pour
bloquer les régressions au fur et à mesure des corrections.

Ajoute aussi .nvmrc (Node 20, comme le Dockerfile).
@Fr-Dae

Fr-Dae commented Oct 25, 2026

Copy link
Copy Markdown
Member

@mortifia je crois qu'on utilise plus NPM maintenant avec le nouveau board c'est bien ça ?

@ohugonnot

Copy link
Copy Markdown
Contributor Author

Pour la partie dépôt : npm est toujours utilisé pour le build. Le Dockerfile (#331) fait npm ci puis npm run build, et package-lock.json est le seul fichier de verrouillage du dépôt (pas de yarn, pnpm ni bun).

Si « NPM » désigne Nginx Proxy Manager, c'est Traefik qui l'a remplacé côté serveur (#329, #334). @mortifia pourra confirmer.

Dans les deux cas, npm run test:links n'est qu'un raccourci : l'outil se lance aussi directement avec python3 scripts/check_links.py, sans npm.

@mortifia
mortifia merged commit 6e0fcd0 into main Oct 25, 2026
1 check passed
@mortifia
mortifia deleted the 345-link-checker branch October 25, 2026 09:41
@mortifia
mortifia restored the 345-link-checker branch October 25, 2026 09:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Ajouter un contrôle des liens cassés (scripts/check_links.py) article manquant

3 participants