-
Notifications
You must be signed in to change notification settings - Fork 0
Modules
pedrokarim edited this page Jun 11, 2026
·
1 revision
Le système de modules permet d'étendre ShareX Manager avec des plugins de traitement d'image (et autres fonctionnalités), chargés dynamiquement au runtime.
Un dossier sous modules/<nom>/ contenant un manifeste module.json et un point d'entrée (ex. index.process.ts). Les modules activés sont importés et leurs fonctions exportées deviennent des « capacités ».
-
Type :
types/modules.ts -
Gestionnaire :
lib/modules/module-manager.api.ts(singletonapiModuleManager) -
Initialisation :
lib/modules/init.ts→ensureInitialized()scannemodules/ -
UI de gestion :
/modules(et/admin/modules)
| Champ | Type | Rôle |
|---|---|---|
name |
string | Identifiant unique (clé + route /m/<name>) |
version |
string | Version (semver) |
description, author
|
string | Métadonnées |
enabled |
boolean | Module actif ou non |
entry |
string | Fichier d'entrée (ex. index.process.ts) |
icon |
string? | Icône Lucide ou URL |
category |
string? | ex. Édition, AI, analysis
|
hasUI |
boolean | Présence d'une interface |
supportedFileTypes |
string[] | Extensions, ou ["*"] pour tout |
settings |
object | Réglages persistés dans module.json
|
dependencies |
string[]? | Dépendances entre modules |
npmDependencies |
Record<string,string>? | Paquets npm installés dans le dossier du module |
capabilities |
string[]? | Fonctions exportées (auto-détectées) |
pages |
{path,title,component}[]? |
Pages UI montées sous /m/<name>/<path>
|
navItems |
{title,icon?,url?}[]? |
Entrées de menu latéral |
-
Chargement : à la première utilisation, le gestionnaire lit chaque
module.json, le valide (Zod), etimport()l'entrée des modules activés. Les hooks (onInit/onEnable/onDisable/onUninstall,processImage,processText,renderUI, …) sont récupérés. Le traitement d'image a un timeout de 30 s. -
Activer / désactiver : bascule
enableddansmodule.jsonet recharge à chaud le module. -
Réglages :
updateModuleSettingsfusionne et persiste, puis recharge. -
Installer / supprimer :
installModulecopie un dossier et lancenpm installpournpmDependencies;deleteModuleexécute les hooks de désinstallation puis supprime. -
Pages : rendues via
app/(app)/m/[moduleName]/[[...path]]/page.tsx; lesnavItemsapparaissent dans la barre latérale.
| Module | Catégorie | UI | Types | Rôle |
|---|---|---|---|---|
hello-world |
text | ✅ | * |
Démo / gabarit |
crop |
Édition | ✅ | images | Recadrage interactif (Sharp + react-image-crop) |
resize |
Édition | ✅ | images | Redimensionnement auto (largeur/hauteur/qualité) |
watermark |
Marque | ✅ | images | Filigrane texte (position/opacité) |
anime-trace |
analysis | ✅ | images | Identification d'anime via trace.moe |
ai-image-gen |
AI | — | — | Génération d'images par IA (pages generate/settings, navItems) |
Le module
ai-image-genest l'exemple le plus complet (entréeindex.process.ts,pages/,lib/providers.ts) et utiliseGOOGLE_API_KEY/ des clés provider configurées dans ses réglages.
➡️ Pour intégrer/automatiser le traitement à l'upload, voir aussi Référence API (routes /api/modules/*).
Démarrage
Utilisation
Intégration bureau
Pour les développeurs
Exploitation