fix(packaging): inline @arboretum/shared dans dist/ — tarball autonome (abandon de bundleDependencies)
Some checks failed
CI / Build & test (Node 24) (push) Has been cancelled
CI / Pack & boot smoke (Node 22) (push) Has been cancelled
CI / Build & test (Node 22) (push) Has been cancelled

bundleDependencies d'un paquet *workspace* est instable selon l'environnement npm
(mode -w, exécution en root sur un runner CI) : npm voyait shared comme un lien
workspace et n'embarquait AUCUN fichier ("bundled files: 0"), publiant un tarball
cassé — `Cannot find module '@arboretum/shared'` au démarrage chez le consommateur.
C'est ce que détectait (à juste titre) le job pack-smoke.

Nouveau mécanisme, identique sur tout environnement : scripts/inline-shared.mjs
(hook prepack) copie le JS compilé de shared dans dist/_shared/ et réécrit l'import
bare '@arboretum/shared' des .js du serveur vers ce chemin relatif. shared passe en
devDependency (résolu en dev via le symlink workspace, jamais exigé du consommateur).
Plus de node_modules embarqué ni de symlink dans le tarball.

ci.yml (pack-smoke) packe désormais en -w (comme release.yml) et asserte l'autonomie
(dist/_shared présent + zéro import bare) avant le boot smoke.

Validé de bout en bout sur checkout propre : npm ci + build + pack -w + install dans
projet vierge + boot -> HTTP 401, et 263 tests verts.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-19 09:46:05 +02:00
parent d342d0e573
commit 842f17fad3
5 changed files with 88 additions and 67 deletions

5
package-lock.json generated
View File

@@ -4841,12 +4841,8 @@
"packages/server": {
"name": "@johanleroy/git-arboretum",
"version": "1.4.0",
"bundleDependencies": [
"@arboretum/shared"
],
"license": "MIT",
"dependencies": {
"@arboretum/shared": "0.1.0",
"@fastify/cookie": "^11.0.0",
"@fastify/static": "^9.0.0",
"@fastify/websocket": "^11.0.0",
@@ -4859,6 +4855,7 @@
"arboretum": "dist/index.js"
},
"devDependencies": {
"@arboretum/shared": "0.1.0",
"@types/web-push": "^3.6.4",
"@types/ws": "^8.5.0"
},