ci(frontend) : accelere le job PR (nuxt build + cache node_modules & build Nuxt/Vite)

- remplace build:dist (nuxt generate + prerender inutile en SPA) par nuxt build
- cache node_modules sur hash du lockfile, npm ci uniquement en cache miss
- regenere les types Nuxt (postinstall) en cache hit
- cache des artefacts .nuxt / Vite avec restore-keys pour eviter le build a froid
This commit is contained in:
Matthieu
2026-05-27 15:46:54 +02:00
parent fceb1e0e83
commit 1cdfe0cd9e
+32
View File
@@ -104,9 +104,41 @@ jobs:
with: with:
node-version: '22' node-version: '22'
# Cache de node_modules entier (pas seulement le cache de download npm).
# Cle = hash du lockfile : tant qu'il ne bouge pas, on saute l'extraction
# des ~1300 paquets (369 Mo) et le postinstall.
- name: Cache node_modules
id: node-modules-cache
uses: actions/cache@v4
with:
path: frontend/node_modules
key: node-modules-${{ hashFiles('frontend/package-lock.json') }}
# npm ci uniquement en cache miss (il efface node_modules de toute facon).
- name: Install Node dependencies - name: Install Node dependencies
if: steps.node-modules-cache.outputs.cache-hit != 'true'
run: npm ci run: npm ci
# En cache hit, node_modules est restaure tel quel : le postinstall
# (nuxt prepare) n'a pas tourne. On regenere les types .nuxt a la main
# pour que lint/vitest/build disposent du contexte Nuxt.
- name: Prepare Nuxt (cache hit)
if: steps.node-modules-cache.outputs.cache-hit == 'true'
run: npm run postinstall
# Cache des artefacts de build Nuxt/Vite pour eviter un build a froid a
# chaque PR. Cle par commit + restore-keys pour repartir du build le plus
# recent ; Vite invalide ses entrees obsoletes par hash de contenu.
- name: Cache Nuxt/Vite build
uses: actions/cache@v4
with:
path: |
frontend/.nuxt
frontend/node_modules/.cache
key: nuxt-build-${{ github.sha }}
restore-keys: |
nuxt-build-
- name: ESLint - name: ESLint
run: npm run lint run: npm run lint