chore(frontend): #ENABLING-1158 aligne ode-explorer sur la norme de versions du socle - #71
Merged
pascalsaussier-edifice merged 6 commits intoAug 7, 2026
Conversation
@edifice.io/bootstrap, @edifice.io/client, @edifice.io/react, @tanstack/react-query, react et react-dom passent de dependencies vers peerDependencies + devDependencies, pour que les 8 fronts consommateurs d'ode-explorer n'embarquent plus leur propre copie du socle (cf ENABLING-1099). vite.config.ts (resolve.dedupe) sert de filet bundler pour les mêmes singletons. Supprime package.json.template et scripts/package.cjs : le repo s'aligne sur le modèle déjà en place chez blog/wiki, où package.json est directement le fichier suivi (plus de génération à partir d'un template à chaque build). Le pin des versions @edifice.io/* par branche/squad est géré par un job Jenkins dédié, comme pour les autres fronts, et non plus par une substitution locale dans build.sh. build.sh : - init: simple pnpm install (comme wiki/blog), plus de copie/sed du template - clean: ne supprime plus package.json, qui est maintenant un fichier suivi et non un artefact généré - publishNPM: version calculée à la publication via `npm version --no-git-tag-version` (dernier tag git + branche + timestamp), comme wiki, au lieu d'un champ figé dans le template - linkDependencies: scanne aussi peerDependencies pour continuer à linker les @edifice.io/* locaux
Le repo explorer est intégré sur develop-enabling (pas develop) : la valeur par défaut committée pour @edifice.io/bootstrap, client et react, ainsi que la base de version, doivent suivre cette branche pour rester cohérentes avec le squad qui la maintient.
@edifice.io/react (2.6.0-develop-enabling) déclare react-hook-form, react-i18next et @tanstack/react-query-devtools en peerDependencies avec des versions exactes. On était en dessous (react-i18next 14.1.0, react-query-devtools résolu en 5.101.4 via caret, ce qui exigeait lui- même react-query ^5.101.4, incompatible avec le 5.62.7 pinné) : pnpm install remontait des warnings "unmet peer dependency". Retire aussi tous les carets (^) du package.json : la version est maintenant fixée en dur pour chaque dépendance, pour éviter qu'une résolution semver silencieuse ne dérive à nouveau d'un pin de peer dependency attendu par le socle.
…onnel SearchButton (@edifice.io/react) declare onClick en () => void (0 argument), alors que handleSearchSubmit exigeait un React.MouseEvent. Le composant transmet en realite l'event natif jusqu'au <button> HTML, donc pas de risque a l'execution, mais le typage strict remontait une erreur TS2322 des que le socle etait resolu depuis le vrai package publie plutot qu'un lien local avec des types differents.
pascalsaussier-edifice
requested review from
damienromito,
david-cc and
jcbe-ode
August 7, 2026 13:49
…narQube Le pom.xml est dans backend/, pas a la racine du repo : le workflow GitHub Actions echouait avec "no POM in this directory" sur chaque push/PR. Pre-existant, corrige au passage car il bloquait la CI de cette PR.
damienromito
reviewed
Aug 7, 2026
| "react-router-dom": "6.23.1", | ||
| "zustand": "4.5.0" | ||
| }, | ||
| "peerDependencies": { |
Member
There was a problem hiding this comment.
Merci je ne connaissais pas le concept de peerDependencies 😱
damienromito
reviewed
Aug 7, 2026
| 'node_modules/@edifice.io/bootstrap/dist/images', | ||
| ), | ||
| }, | ||
| dedupe: [ |
Member
There was a problem hiding this comment.
et ça non plus du coup. Interesting !
damienromito
approved these changes
Aug 7, 2026
peerDependencies exige un range semver, pas un dist-tag npm : la valeur "develop-enabling" n'est pas un range valide (semver.validRange renvoie null), donc pnpm ne pouvait jamais la satisfaire quelle que soit la version installee de @edifice.io/bootstrap|client|react - confirme par un warning "unmet peer dependency" reproductible sur wiki apres install d'une version de ode-explorer publiee en test. Les dist-tags restent valides pour dependencies/devDependencies (pnpm les resout via le registre a l'install), mais pas pour peerDependencies (simple comparaison semver.satisfies). On passe ces 3 entrees a "*" : la compatibilite reelle entre branches/squads est de toute facon geree par le job Jenkins dedie, pas par ce champ.
pascalsaussier-edifice
deleted the
chore-ENABLING-1158-aligner-versions-socle
branch
August 7, 2026 15:07
pascalsaussier-edifice
added a commit
that referenced
this pull request
Aug 24, 2026
…ersions du socle (#71)
benjaminperez
pushed a commit
that referenced
this pull request
Aug 27, 2026
…ersions du socle (#71)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Résumé
Applique sur
explorerles actions N9 et N4 identifiées par ENABLING-1099 pour réduire la duplication du socle React chez les 8 fronts consommateurs d'ode-explorer, et supprime le mécanisme de templatepackage.json.templatedevenu superflu.Contexte
ode-explorerdéclarait@edifice.io/bootstrap/client/react,@tanstack/react-query,reactetreact-domendependenciesau lieu depeerDependencies, ce qui faisait que chaque front consommateur embarquait sa propre copie du socle React.Ticket : ENABLING-1158
N10 et N5 du ticket ne sont volontairement pas traités ici via l'approche initialement proposée (gitignore du
package.jsongénéré / garde-fou CIcheck-singletons.sh) ; N10 est traité différemment (voir ci-dessous), N5 reste hors scope.Changements
@edifice.io/bootstrap,@edifice.io/client,@edifice.io/react,@tanstack/react-query,react,react-dompassent dedependenciesverspeerDependencies+devDependencies.resolve.dedupedansvite.config.tscomme filet bundler pour les mêmes singletons.package.json.templateetscripts/package.cjs.package.jsondevient la seule source de vérité (aligné sur le modèle déjà en place chezblog/wiki) ; le pin des versions@edifice.io/*par branche/squad est délégué au job Jenkins dédié, plus de génération locale à chaqueinit.build.sh:initsimplifié enpnpm install,cleanne supprime pluspackage.json,publishNPMcalcule la version à la publication vianpm version --no-git-tag-version(dernier tag git + branche + timestamp) au lieu d'un champ figé dans un template,linkDependenciesscanne aussipeerDependencies.^) dupackage.json: chaque version est pinnée en dur, pour éviter qu'une résolution semver silencieuse dérive d'un pin de peer dependency attendu par le socle (@edifice.io/reactdéclare des peers en versions exactes).react-hook-form,react-i18next,@tanstack/react-query-devtools,@react-spring/web) et une erreur TS surSearchForm.tsx(event optionnel surhandleSearchSubmitpour matcher le typage deSearchButton.onClick).Comment tester
cd frontend && rm -rf node_modules pnpm-lock.yaml && ./build.sh --no-docker init— vérifier qu'aucun warningunmet peer dependencyn'apparaît.pnpm build— build prod + lib doivent passer sans erreur.find node_modules/.pnpm -maxdepth 1 -iname "react@*"ne doit renvoyer qu'une seule version.ode-explorerrepublié, valider sur l'app piloteblog(import deExplorer/AppParamsdepuisode-explorer/lib) avant propagation aux 8 consommateurs.