diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 4f97ec4..2059a85 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -30,8 +30,13 @@ jobs: - run: npm run build:site - run: npx vitest run # packages/desktop est HORS des workspaces (CI daemon allégée) : sans cette étape, son code - # n'était JAMAIS typechecké avant un tag de release. + # n'était JAMAIS typechecké avant un tag de release. Une seule version de Node suffit, et + # ELECTRON_SKIP_BINARY_DOWNLOAD évite de télécharger ~100 Mo de binaire Electron dont un + # typecheck n'a aucun besoin (c'est ce qui rendait le job très long). - name: Typecheck desktop shell + if: matrix.node == '22' + env: + ELECTRON_SKIP_BINARY_DOWNLOAD: '1' run: | npm --prefix packages/desktop ci npm run typecheck:desktop @@ -63,9 +68,11 @@ jobs: rm -rf /tmp/inspect && mkdir -p /tmp/inspect && tar -xzf "$tgz" -C /tmp/inspect test -f /tmp/inspect/package/dist/_shared/index.js \ || { echo "ERREUR: dist/_shared/index.js absent de $tgz : inline-shared n'a pas tourné ?"; exit 1; } - if grep -rq '@arboretum/shared' /tmp/inspect/package/dist; then + # On cherche les vraies formes d'IMPORT, pas la simple chaîne : un commentaire de code qui + # mentionne le paquet (pour dire où vit la règle partagée) est légitime et ne casse rien. + if grep -rqE "(from|require\(|import\()[[:space:]]*['\"]@arboretum/shared" /tmp/inspect/package/dist; then echo "ERREUR: import bare '@arboretum/shared' encore présent dans le JS publié" - grep -rn '@arboretum/shared' /tmp/inspect/package/dist; exit 1 + grep -rnE "(from|require\(|import\()[[:space:]]*['\"]@arboretum/shared" /tmp/inspect/package/dist; exit 1 fi echo "OK: paquet autonome : shared inliné dans dist/_shared, aucun import externe" - name: Install tarball in an empty project