Skip to content

Checklist de publication Community

Cette page résume la procédure de validation avant publication npm de @vevedh/qform-builder-layer.

Cycle de test local rapide

Le script public typecheck régénère d'abord .playground/.nuxt avec nuxi prepare, puis exécute vue-tsc avec tsconfig.nuxt.json.

Sous PowerShell :

powershell
bun run clean && bun i && bun run typecheck && bun dev

Avec PowerShell 7, && empêche bun dev de démarrer si le typecheck échoue. Avec ;, PowerShell poursuit la chaîne même après un code de sortie non nul.

Sous Bash/Zsh :

bash
bun run clean && bun install && bun run typecheck && bun dev

L'ancien script typecheck:nuxt est conservé comme alias rétrocompatible.

1. Nettoyage

bash
bun run clean

Sous Windows, en cas de cache corrompu :

powershell
Remove-Item -Recurse -Force .playground\.nuxt, .playground\.output, .nuxt, .output, node_modules\.cache\vite, node_modules\.vite -ErrorAction SilentlyContinue

2. Installation

bash
bun install

3. Validation complète

bash
bun run layer:assets:check
bun run catalog:check
bun run nested:check
bun run column:check
bun run viewport:check
bun run columns-layout:check
bun run phase1:check
bun run schema-transfer:check
bun run steps:check
bun run validation:check
bun run validation:runtime:check
bun run quasar-advanced:check
bun run quasar-advanced:runtime:check
bun run drop-indicator:check
bun run e2e:static:check
bun run formkit:check
bun run ui:i18n:check
bun run docs:i18n:check
bun run docs:build
bun run typecheck
bun run runtime:build:check
bun run pack:dry-run

Ou directement :

bash
bun run release:doctor

Validation avancée à tester

  1. ouvrir /validation ;
  2. sélectionner une règle native avec et sans argument ;
  3. saisir une regex valide puis une regex refusée comme dangereuse ;
  4. personnaliser le message d’une règle et vérifier le rendu en aperçu ;
  5. comparer deux champs avec les opérateurs numériques ;
  6. vérifier la règle publique multiple_of dans le builder puis dans FormViewer ;
  7. exporter/importer le schéma et confirmer qu’aucune fonction validationRules n’est sérialisée.
bash
bun run validation:check
bun run validation:runtime:check

4. Vérifier le contenu publié

bash
npm pack --dry-run

Le package npm doit contenir :

txt
app/components
app/composables
app/constants
app/stores
app/locales
app/types
app/utils
app/validation
formkit.config.ts
nuxt.config.ts
README.md
LICENSE
CHANGELOG.md
COMMUNITY_EDITION.md
SECURITY.md

Il ne doit pas contenir :

txt
.playground
.nuxt
.output
node_modules
PROMPT_CONTEXT.md
patch-memory/PATCH_*.md
*.zip

5. Dry-run publication

bash
bun run npm:publish:dry-run

ou :

bash
bun run npm:publish:dry-run

6. Publication réelle

bash
npm login
bun run npm:publish

Pour un package scoped public, la première publication doit être publique explicitement.

7. Test consommateur

Créer un projet Nuxt 4 neuf :

bash
bunx nuxi init qform-consumer-test
cd qform-consumer-test
bun install

Installer les dépendances :

bash
bun add @vevedh/qform-builder-layer \
  nuxt-quasar-ui @pinia/nuxt @formkit/nuxt \
  quasar @quasar/extras \
  @formkit/core @formkit/i18n @formkit/inputs @formkit/vue @formkit/utils pinia

Configurer :

ts
export default defineNuxtConfig({
  extends: ['@vevedh/qform-builder-layer'],
  compatibilityDate: '2026-05-09',
})

Tester :

vue
<script setup lang="ts">
import type { FormBuilderSchema, FormBuilderValues } from '@vevedh/qform-builder-layer/types'

const schema = ref<FormBuilderSchema>([])
const values = ref<FormBuilderValues>({})
</script>

<template>
  <ClientOnly>
    <FormBuilder
      builder-id="consumer-test-builder"
      v-model:schema="schema"
      v-model:values="values"
      autosave
    />
  </ClientOnly>
</template>

Options avancées Quasar et E2E visuel

  • [ ] Ouvrir /quasar-advanced et vérifier les panneaux QEditor, QSelect et QRating.
  • [ ] Tester le passage d'un select simple à multiple et confirmer la normalisation du modèle.
  • [ ] Vérifier que le filtrage local du select ne rend jamais de HTML fourni par le schéma.
  • [ ] Déplacer un élément entre deux champs et confirmer qu'une seule ligne Déposez ici est visible.
  • [ ] Exécuter les scénarios visuels et inspecter chaque différence avant de mettre à jour les références.
bash
bun run quasar-advanced:check
bun run quasar-advanced:runtime:check
bun run drop-indicator:check
bun run e2e:static:check
bun run e2e:visual

Accessibilité 0.1.16

bash
bun run accessibility:check
bun run release:browser:check

La release est bloquée si le parcours clavier, la restitution du focus, les modes lecture seule/désactivé ou l’audit axe WCAG A/AA échouent. Compléter l’automatisation par une revue au clavier, à 200 % de zoom et avec NVDA.

Industrialisation 0.1.17

La candidate de release doit maintenant passer les frontières suivantes :

bash
bun run industrialization:check
bun run ci:quality
bun run e2e:ci:functional
bun run release:browser:check
bun run pack:artifact

ci:quality construit le playground et l’application Nuxt hôte SSR, vérifie le budget de bundle et inspecte le manifeste npm. La matrice GitHub Actions rejoue ces contrôles sur Ubuntu et Windows. Les comparaisons visuelles restent exécutées sur Windows ; Linux exécute les parcours fonctionnels et l’audit axe.

Avant publication, inspecter :

  • .artifacts/bundle-budget.json ;
  • .artifacts/package-manifest.json ;
  • le SHA-256 du .tgz ;
  • les douze baselines Playwright ;
  • les rapports des deux runners GitHub Actions.

Isolation Playwright 0.1.18

  • [ ] bun run e2e:server:check réussit.
  • [ ] bun run ci:quality réussit sans dépendre des captures.
  • [ ] Les captures absentes sont initialisées avec bun run e2e:visual:bootstrap.
  • [ ] Les 12 PNG sont inspectés puis versionnés.
  • [ ] bun run release:browser:check réussit sans mise à jour automatique.

Complétude du dépôt

  • [ ] bun run workspace:check réussit avant tout autre contrôle.
  • [ ] Le dossier a été initialisé depuis une archive complète, pas depuis un overlay seul.
  • [ ] Les scripts, tests/e2e, .playground et tests/host-app sont présents.

Gel d’API avant la RC

bash
bun run api:contract:check
bun run typecheck:contract
bun run release:candidate:check

Le manifeste public-api.manifest.json doit être relu dans le diff. La CI ne doit jamais lancer api:contract:update. Une suppression ou un renommage de prop, événement, méthode, type ou sous-chemin bloque la RC.

Guide illustré automatisé

bash
bun run docs:screenshots
bun run docs:screenshots:strict
bun run docs:build

Vérifier que le manifeste annonce source: playwright, que les douze PNG FR/EN ont été inspectés et qu’aucune donnée personnelle n’apparaît dans la fixture ou les images.

QForm Builder — layer Nuxt 4, Quasar et FormKit pour formulaires dynamiques.