> [!NOTE] Les add-ons communautaires sont actuellement **expérimentaux**. L'API peut évoluer. Ne les > utilisez pas en production pour le moment ! Ce guide explique comment créer, tester, et publier des add-ons communautaires pour `sv`. ## Démarrage rapide [!VO]Quick start La manière la plus simple de créer un add-on est d'utiliser le template d'add-on : ```sh npx sv create --template addon my-addon cd my-addon ``` ## Structure de l'add-on [!VO]Add-on structure Un add-on ressemble généralement à ceci : _survolez les mots-clés dans le code pour obtenir plus de contexte_ ```js import { defineAddon, defineAddonOptions, parse, svelte } from 'sv/core'; // Définir des options qui seront présentées à l'utilisateur (ou passées en arguments) const options = defineAddonOptions() .add('who', { question: "À qui l'add-on doit-il dire bonjour ?", type: 'string' // boolean | number | select | multiselect }) .build(); // la définition de votre add-on, le point d'entrée export default defineAddon({ id: 'le-nom-de-l-add-on', options, // étape de préparation, vérification des prérequis et des dépendances setup: ({ dependsOn }) => { dependsOn('tailwindcss'); }, // exécution de l'add-on run: ({ kit, cancel, sv, options }) => { if (!kit) return cancel('SvelteKit est requis'); // Ajoute "Bonjour [who]" à la page racine sv.file(kit.routesDirectory + '/+page.svelte', (content) => { const { ast, generateCode } = parse.svelte(content); svelte.addFragment(ast, `
Bonjour ${options.who} !
`); return generateCode(); }); } }); ``` ## Développement avec le protocole `file:` [!VO]Development with `file:` protocol Lorsque vous développez votre add-on, vous pouvez le tester localement en utilisant le protocole `file:` : ```sh # Dans votre projet test npx sv add file:../path/to/my-addon ``` Ceci vous permet d'itérer rapidement sans publier sur npm. ## Tester avec `sv/testing` [!VO]Testing with `sv/testing` Le module `sv/testing` fournit des utilitaires pour tester votre add-on : ```js import { test, expect } from 'vitest'; import { setupTest } from 'sv/testing'; import addon from './index.js'; test("ajoute un message d'accueil", async () => { const { content } = await setupTest({ addon, options: { who: 'tout le monde' }, files: { 'src/routes/+page.svelte': '