iducationducation
IndexArticlesFormationsProfilOutilsBibliothech
N°014 — 2026
Navigation
01Index02Articles03Formations04Profil05Outils06Bibliothech
N°014 — 2026
iducationducation
IndexArticlesFormationsProfilOutilsBibliothech
N°014 — 2026
Navigation
01Index02Articles03Formations04Profil05Outils06Bibliothech
N°014 — 2026
Formations
TypeScript · Intermédiaire

OpenPatch

Créer et publier une librairie Vue 3 — composant de patch notes avec mode Vue, composable, mode standalone CDN, personnalisation CSS et publication npm.

Vue 3TypeScriptViteTailwind CSS v4
GitHub
01Setup Vite + Vue 3 + TypeScript02Types TypeScript et structure de données03Le composant OpenPatch.vue04Versioning avec localStorage05Le composable useOpenPatch06Mode standalone CDN07Build dual-mode et publication npm
Chapitre 2·15 min

Types TypeScript et structure de données

Avant d'écrire une ligne de composant, on définit les types. Ils servent à la fois de contrat d'API et de documentation pour les utilisateurs de la librairie.

Structure des patch notes

src/types/settings.ts
export interface PatchNoteSection {
  title: string
  items: string[]
}
 
export interface PatchNotesConfig {
  title: string
  sections: PatchNoteSection[]
}

Un objet PatchNotesConfig ressemble à ça en pratique :

const patchnotes: PatchNotesConfig = {
  title: "Version 2.0.0",
  sections: [
    {
      title: "Nouvelles fonctionnalités",
      items: ["Mode sombre", "Export PDF", "Raccourcis clavier"]
    },
    {
      title: "Corrections",
      items: ["Crash Safari iOS", "Fuite mémoire sur navigation rapide"]
    }
  ]
}

Personnalisation CSS

src/types/settings.ts
export interface CSSCustomization {
  primaryColor?: string
  backgroundColor?: string
  textColor?: string
  buttonBackgroundColor?: string
  buttonTextColor?: string
  borderColor?: string
  accentColor?: string
}

Toutes les propriétés sont optionnelles — la librairie a des valeurs par défaut. L'utilisateur surcharge uniquement ce qu'il veut changer.

Configuration du mode standalone

src/types/settings.ts
export interface WidgetOptions {
  closeButtonText?: string
  forceShow?: boolean
}
 
export interface WindowSettings {
  projectId: string
  version?: string
  patchnotes?: PatchNotesConfig
  options?: WidgetOptions
  css?: CSSCustomization
}
 
export interface JSONConfig {
  version: string
  patchnotes: PatchNotesConfig
}
 
export interface OpenPatchConfig {
  jsonUrl?: string
}

WindowSettings est ce que l'utilisateur pose sur window.Settings en mode standalone. JSONConfig est le format du fichier JSON distant — plus léger, sans les options ni le CSS.

Augmentation du type Window

src/types/settings.ts
declare global {
  interface Window {
    Settings?: WindowSettings
    OpenPatchConfig?: OpenPatchConfig
    OpenPatch?: {
      show: () => void
      hide: () => void
      reset: () => void
    }
  }
}
 
export {}

Sans cette déclaration, TypeScript se plaint à chaque accès à window.Settings ou window.OpenPatch. Le export {} transforme le fichier en module — nécessaire pour que declare global fonctionne dans un fichier .ts.

Précédent
Setup Vite + Vue 3 + TypeScript
Suivant
Le composant OpenPatch.vue

Développeur fullstack passionné. J'apprends en construisant et je documente tout — front, back, outils. Le code s'apprend mieux en public.

Naviguer

IndexTous les articlesFormationsProfilOutilsBibliothech

Ailleurs

GitHub RSS

Newsletter

Les articles, libs et découvertes. Une fois par semaine, pas plus.

© 2026 William LoreeConçu & codé à la main