Débloquez la puissance de VS Code en apprenant à créer des extensions personnalisées. Ce guide vous accompagne de la configuration à la publication.
Maîtriser le développement d'extensions VS Code : un guide complet pour les développeurs du monde entier
Visual Studio Code (VS Code) est devenu l’éditeur de code de référence pour des millions de développeurs dans le monde entier. Sa popularité découle de sa nature légère, de ses fonctionnalités puissantes et, surtout, de son extensibilité. La possibilité de créer des extensions personnalisées permet aux développeurs d’adapter l’éditeur à leurs besoins spécifiques, ce qui améliore la productivité et rationalise les flux de travail. Ce guide complet vous guidera tout au long du processus de création de vos propres extensions VS Code, de la configuration initiale à la publication de votre création pour que le monde entier puisse l’utiliser.
Pourquoi développer des extensions VS Code ?
Le développement d’extensions VS Code offre de nombreux avantages, tant pour les développeurs individuels que pour les organisations :
- Flux de travail personnalisé : Personnalisez l’éditeur pour qu’il corresponde parfaitement à votre style de codage et aux exigences de votre projet.
- Productivité accrue : Automatisez les tâches répétitives, intégrez-vous à des outils externes et rationalisez votre processus de développement.
- Collaboration améliorée : Partagez des extensions avec votre équipe ou la communauté au sens large pour normaliser les flux de travail et améliorer la qualité du code.
- Apprentissage et développement des compétences : Acquérir de l’expérience avec TypeScript, Node.js et l’API VS Code ouvre de nouvelles opportunités de carrière.
- Contribution communautaire : Partagez vos solutions innovantes avec la communauté mondiale des développeurs et contribuez à l’écosystème.
Conditions préalables
Avant de vous lancer dans le développement d’extensions, assurez-vous que les éléments suivants sont installés :
- Node.js et npm (Node Package Manager) : Le développement d’extensions VS Code repose fortement sur Node.js. Téléchargez et installez la dernière version LTS depuis le site officiel de Node.js. npm est automatiquement installé avec Node.js.
- Visual Studio Code : Assurez-vous d’avoir la dernière version de VS Code installée.
- Yeoman et le générateur d’extensions VS Code : Yeoman est un outil d’échafaudage qui simplifie le processus de création d’extensions. Installez-le globalement à l’aide de npm :
npm install -g yo generator-code
Configuration de votre environnement de développement
Une fois les conditions préalables en place, vous êtes prêt à configurer votre environnement de développement :
- Créer un nouveau projet d’extension : Ouvrez votre terminal et exécutez la commande suivante pour démarrer le générateur d’extensions :
- Répondre aux invites : Le générateur posera une série de questions sur votre extension. Voici une ventilation des invites courantes et des réponses recommandées :
- Quel type d’extension voulez-vous créer ? Choisissez « Nouvelle extension (TypeScript) » pour une extension basée sur TypeScript, ce qui est l’approche recommandée.
- Quel est le nom de votre extension ? Choisissez un nom descriptif et unique pour votre extension. Exemples : « Code Spell Checker », « JavaScript Snippets », « Python Autocomplete ».
- Quel est l’identifiant de votre extension ? Il s’agit d’un identifiant unique pour votre extension, généralement au format `publisher.extension-name`. Choisissez un nom d’éditeur (par exemple, votre nom d’utilisateur GitHub ou le nom de votre entreprise).
- Quelle est la description de votre extension ? Fournissez une description concise et informative de ce que fait votre extension.
- Initialiser un dépôt git ? Choisissez « Oui » pour initialiser un dépôt Git pour le contrôle de version.
- Voulez-vous utiliser eslint pour linter le code ? Choisissez « Oui » pour appliquer la cohérence du style de code.
- Ouvrir le projet dans VS Code : Une fois que le générateur est terminé, ouvrez le dossier du projet nouvellement créé dans VS Code.
yo code
Comprendre la structure du projet
Le générateur d’extensions crée une structure de projet de base avec les fichiers clés suivants :
- `package.json` : Ce fichier contient des métadonnées sur votre extension, notamment son nom, sa version, sa description, ses dépendances et ses événements d’activation.
- `tsconfig.json` : Ce fichier configure le compilateur TypeScript.
- `.vscode/launch.json` : Ce fichier configure le débogueur pour votre extension.
- `src/extension.ts` : Il s’agit du point d’entrée principal de votre extension. Il contient les fonctions `activate` et `deactivate`.
- `README.md` : Un fichier markdown fournissant une description de votre extension, comment l’utiliser et toute information pertinente.
Écrire votre première extension
Commençons par créer une extension simple qui affiche un message « Hello World » lorsqu’une commande est exécutée :
- Ouvrir `src/extension.ts` : Ce fichier contient la fonction `activate`, qui est appelée lorsque votre extension est activée.
- Modifier la fonction `activate` : Remplacez le code existant par ce qui suit :
- Explication :
- `vscode.commands.registerCommand('my-extension.helloWorld', ...)` : Enregistre une commande avec l’ID `my-extension.helloWorld`. Cette commande sera disponible dans la palette de commandes VS Code.
- `vscode.window.showInformationMessage('Hello World from My Extension!')` : Affiche un message d’information dans la fenêtre VS Code.
- `context.subscriptions.push(disposable)` : Ajoute la commande aux abonnements de l’extension, en veillant à ce qu’elle soit correctement supprimée lorsque l’extension est désactivée.
- Modifier `package.json` : Ajoutez ce qui suit à la section `contributes` pour définir la commande :
- Explication :
- `"commands"` : Définit les commandes que votre extension contribue.
- `"command": "my-extension.helloWorld"` : Spécifie l’ID de commande qui correspond à l’ID utilisé dans `extension.ts`.
- `"title": "Hello World"` : Définit le nom d’affichage de la commande dans la palette de commandes.
import * as vscode from 'vscode';
export function activate(context: vscode.ExtensionContext) {
console.log('Congratulations, your extension "my-extension" is now active!');
let disposable = vscode.commands.registerCommand('my-extension.helloWorld', () => {
vscode.window.showInformationMessage('Hello World from My Extension!');
});
context.subscriptions.push(disposable);
}
export function deactivate() {}
"contributes": {
"commands": [{
"command": "my-extension.helloWorld",
"title": "Hello World"
}]
}
Tester votre extension
Il est maintenant temps de tester votre extension :
- Appuyez sur F5 : Cela lancera une nouvelle fenêtre VS Code avec votre extension installée. Il s’agit de l’« Extension Development Host ».
- Ouvrez la palette de commandes : Appuyez sur `Ctrl+Maj+P` (ou `Cmd+Maj+P` sur macOS) pour ouvrir la palette de commandes.
- Tapez « Hello World » : Vous devriez voir votre commande répertoriée dans la palette de commandes.
- Sélectionnez « Hello World » : Cliquer sur la commande l’exécutera et affichera le message « Hello World » dans la fenêtre VS Code.
Débogage de votre extension
Le débogage est crucial pour identifier et corriger les problèmes dans votre extension. VS Code fournit un excellent support de débogage :
- Définir des points d’arrêt : Cliquez dans la gouttière de l’éditeur en regard des numéros de ligne pour définir des points d’arrêt dans votre code.
- Appuyez sur F5 : Cela lancera l’Extension Development Host en mode débogage.
- Déclencher votre extension : Exécutez la commande ou l’action qui déclenche le code que vous souhaitez déboguer.
- Inspecter les variables et la pile d’appels : Le débogueur VS Code mettra en pause l’exécution à vos points d’arrêt, ce qui vous permettra d’inspecter les variables, de parcourir le code pas à pas et d’examiner la pile d’appels.
Travailler avec l’API VS Code
L’API VS Code fournit un riche ensemble d’interfaces et de fonctions pour interagir avec l’éditeur. Voici quelques domaines clés de l’API :
- `vscode.window` : Pour interagir avec la fenêtre VS Code, afficher des messages, afficher des zones de saisie et gérer les panneaux.
- `vscode.workspace` : Pour accéder et manipuler l’espace de travail, y compris les fichiers, les dossiers et les paramètres de configuration.
- `vscode.commands` : Pour l’enregistrement et l’exécution des commandes.
- `vscode.languages` : Pour fournir une prise en charge linguistique, telle que la coloration syntaxique, l’achèvement du code et les diagnostics.
- `vscode.debug` : Pour interagir avec le débogueur.
- `vscode.scm` : Pour interagir avec les systèmes de gestion du contrôle de code source comme Git.
Exemple : Création d’une extension d’extrait de code
Créons une extension qui ajoute un extrait de code pour la création d’un composant React de base :
- Créer un dossier `snippets` : Créez un nouveau dossier nommé `snippets` à la racine de votre projet.
- Créer un fichier d’extrait de code : Créez un fichier nommé `react.json` dans le dossier `snippets`.
- Ajouter la définition de l’extrait de code : Ajoutez le JSON suivant à `react.json` :
- Explication :
- `"React Component"` : Le nom de l’extrait de code.
- `"prefix": "reactcomp"` : Le préfixe qui déclenche l’extrait de code. Taper `reactcomp` et appuyer sur `Tab` insérera l’extrait de code.
- `"body"` : Un tableau de chaînes représentant les lignes de code de l’extrait de code.
- `${1:ComponentName}` : Une tabulation qui vous permet de modifier rapidement le nom du composant.
- `"description"` : Une description de l’extrait de code.
- Modifier `package.json` : Ajoutez ce qui suit à la section `contributes` :
- Explication :
- `"snippets"` : Définit les extraits de code que votre extension contribue.
- `"language": "javascriptreact"` : Spécifie la langue pour laquelle l’extrait de code est applicable.
- `"path": "./snippets/react.json"` : Spécifie le chemin d’accès au fichier d’extrait de code.
- Testez votre extrait de code : Ouvrez un fichier `.jsx` ou `.tsx` et tapez `reactcomp`. Appuyez sur `Tab` pour insérer l’extrait de code.
{
"React Component": {
"prefix": "reactcomp",
"body": [
"import React from 'react';",
"",
"interface Props {\n\t[key: string]: any;\n}",
"",
"const ${1:ComponentName}: React.FC = (props: Props) => {\n\treturn (\n\t\t\n\t\t\t${2:Content}\n\t\t\n\t);\n};",
"",
"export default ${1:ComponentName};"
],
"description": "Creates a basic React component"
}
}
"contributes": {
"snippets": [{
"language": "javascriptreact",
"path": "./snippets/react.json"
}]
}
Techniques avancées de développement d’extensions
Une fois que vous maîtrisez les bases, vous pouvez explorer des techniques de développement d’extensions plus avancées :
- Protocole de serveur de langage (LSP) : Utilisez LSP pour fournir une prise en charge linguistique avancée, telle que l’achèvement du code, les diagnostics et la refactorisation, pour une langue spécifique. Les implémentations LSP populaires incluent celles pour Python, Java et Go.
- Adaptateurs de débogage : Créez des adaptateurs de débogage personnalisés pour prendre en charge le débogage de langages de programmation ou d’exécutions spécifiques.
- Webviews : Intégrez des interfaces utilisateur Web interactives dans VS Code à l’aide de webviews. Cela vous permet de créer des extensions complexes et visuellement attrayantes.
- Thèmes : Créez des thèmes personnalisés pour modifier l’apparence de VS Code. De nombreux thèmes populaires sont disponibles sur la Place de marché VS Code.
- Raccourcis clavier : Définissez des raccourcis clavier personnalisés pour mapper des actions spécifiques à des raccourcis clavier.
Internationalisation et localisation (i18n et L10n)
Pour atteindre un public mondial, envisagez d’internationaliser et de localiser votre extension. Cela implique d’adapter votre extension pour prendre en charge différentes langues et régions.
- Externaliser les chaînes : Déplacez toutes les chaînes destinées aux utilisateurs dans des fichiers de ressources distincts.
- Utiliser l’API i18n de VS Code : VS Code fournit une API pour charger des chaînes localisées en fonction des paramètres régionaux de l’utilisateur.
- Prendre en charge plusieurs langues : Fournissez des fichiers de ressources pour différentes langues.
- Envisager une présentation de droite à gauche (RTL) : Si votre extension affiche du texte, assurez-vous qu’elle prend en charge les langues RTL comme l’arabe et l’hébreu.
Publication de votre extension
Une fois que votre extension est prête, vous pouvez la publier sur la Place de marché VS Code pour que d’autres l’utilisent :
- Créer une organisation Azure DevOps : Vous aurez besoin d’une organisation Azure DevOps pour publier votre extension. Si vous n’en avez pas, créez un compte gratuit sur le site Web Azure DevOps.
- Installer l’outil `vsce` : Le gestionnaire d’extensions VS Code (`vsce`) est un outil de ligne de commande permettant d’empaqueter et de publier des extensions. Installez-le globalement à l’aide de npm :
- Créer un éditeur : Un éditeur est une identité qui possède vos extensions sur la Place de marché. Créez un éditeur à l’aide de la commande `vsce create-publisher`. Vous devrez fournir un nom d’éditeur et un jeton d’accès personnel (PAT) à partir d’Azure DevOps.
- Générer un jeton d’accès personnel (PAT) : Dans Azure DevOps, accédez à « Paramètres utilisateur » -> « Jetons d’accès personnels » et créez un nouveau PAT avec l’étendue « Place de marché (Publier) ».
- Empaqueter votre extension : Utilisez la commande `vsce package` pour empaqueter votre extension dans un fichier `.vsix`.
- Publier votre extension : Utilisez la commande `vsce publish` pour publier votre extension sur la Place de marché. Vous devrez fournir le nom de votre éditeur et votre PAT.
npm install -g vsce
Meilleures pratiques pour le développement d’extensions
Suivez ces meilleures pratiques pour créer des extensions VS Code de haute qualité et maintenables :
- Utiliser TypeScript : TypeScript fournit un typage statique et améliore la maintenabilité du code.
- Écrire des tests unitaires : Écrivez des tests unitaires pour vous assurer que votre extension fonctionne correctement.
- Utiliser un linter : Utilisez un linter comme ESLint pour appliquer la cohérence du style de code.
- Documenter votre code : Écrivez une documentation claire et concise pour votre extension.
- Gérer les erreurs avec élégance : Mettez en œuvre une gestion appropriée des erreurs pour empêcher votre extension de planter.
- Optimiser les performances : Optimisez les performances de votre extension pour éviter de ralentir VS Code.
- Suivre les directives de l’API VS Code : Respectez les directives de l’API VS Code pour vous assurer que votre extension s’intègre bien à l’éditeur.
- Tenir compte de l’accessibilité : Rendez votre extension accessible aux utilisateurs handicapés.
Ressources communautaires
Voici quelques ressources précieuses pour en savoir plus sur le développement d’extensions VS Code :
- Documentation de l’API d’extension VS Code : La documentation officielle de l’API d’extension VS Code.
- Exemples d’extensions VS Code : Une collection d’exemples d’extensions qui démontrent diverses fonctionnalités de l’API.
- Place de marché VS Code : Parcourez la Place de marché VS Code pour trouver des extensions existantes et apprendre de leur code.
- Stack Overflow : Posez des questions et trouvez des réponses concernant le développement d’extensions VS Code.
- GitHub : Explorez les extensions VS Code open source et contribuez à la communauté.
Conclusion
Le développement d’extensions VS Code est un moyen puissant de personnaliser votre environnement de codage, d’accroître votre productivité et de partager vos solutions avec la communauté mondiale des développeurs. En suivant ce guide complet, vous pouvez maîtriser l’art du développement d’extensions et créer des outils innovants qui améliorent l’expérience VS Code pour vous et pour les autres. N’oubliez pas d’adopter la communauté, de contribuer aux projets open source et d’apprendre et d’explorer en permanence le monde en constante évolution du développement d’extensions VS Code. Bonne chance et bon codage !