Auto-imports
Que sont les auto-imports ?
Dans un projet TypeScript classique, vous devez importer manuellement chaque fonction ou classe que vous utilisez :
import { GlyriaCommand } from "@glyria/bot"
import { EmbedV2Builder } from "@glyria/bot"
import { GlyriaClient } from "@glyria/bot"
glyria.js élimine complètement cette contrainte. Chaque utilitaire du framework est automatiquement disponible comme variable globale — aucun import n'est nécessaire dans votre projet.
// aucun import — ça fonctionne directement
export default new GlyriaCommand()
.setName("ping")
.setDescription("Pong !")
.execute(async (ctx) => {
await ctx.reply({ content: "Pong !" })
})
Comment cela fonctionne
glyria.js utilise deux mécanismes qui fonctionnent ensemble :
Injection à l'exécution — lorsque votre bot démarre, glyria.js injecte tous les utilitaires dans globalThis. Chaque fichier exécuté ensuite y a accès sans avoir besoin de les importer.
Déclarations de types — glyria.js génère un fichier .glyria/imports.d.ts qui informe TypeScript de l'existence de ces variables globales. Cela vous offre l'autocomplétion et la vérification de types complètes dans votre IDE.
Variables globales disponibles
Framework
| Variable globale | Description |
|---|---|
GlyriaClient | Client du bot Discord |
GlyriaCommand | Constructeur de commandes slash |
GlyriaUserCommand | Constructeur de commandes de menu contextuel (utilisateur) |
GlyriaMessageCommand | Constructeur de commandes de menu contextuel (message) |
GlyriaEvent | Constructeur d'écouteurs d'événements |
EmbedV2Builder | Constructeur d'Embed V2 |
GlyriaBus | Bus d'événements |
globalBus | Singleton du bus d'événements du framework |
createReplyableContext | Utilitaire de contexte répondable |
useCommands | Accès au registre des commandes |
defineGlyriaConfig | Utilitaire de configuration |
logger | Logger stylisé pour le terminal |
hexToNumber | Conversion d'une couleur hexadécimale en nombre |
Events | Énumération Events de discord.js |
discord.js
L'intégralité de la bibliothèque discord.js est disponible sous l'espace de noms djs — aucun import nécessaire :
djs.PermissionsBitField.Flags.BanMembers
djs.GatewayIntentBits.Guilds
djs.ButtonStyle.Primary
// ... tout ce que discord.js exporte
Variables globales utilisateur
Toute fonction exportée depuis src/utils/, src/composables/ ou src/index.ts est également auto-importée et disponible globalement.
// src/utils/useDatabase.ts
export const useDatabase = () => {
return {
find: (id: string) => { /* ... */ },
save: (data: any) => { /* ... */ },
}
}
// src/commands/ping.ts — aucun import nécessaire
export default new GlyriaCommand()
.setName("ping")
.execute(async (ctx) => {
const db = useDatabase()
const user = await db.find(ctx.user.id)
})
Dossiers personnalisés
Par défaut, les dossiers src/utils/ et src/composables/ sont analysés. Vous pouvez ajouter vos propres dossiers dans glyria.config.ts :
export default defineGlyriaConfig({
dev: {
autoImportDirs: ['utils', 'composables', 'helpers', 'lib']
}
})
Variables globales des modules
Les modules déclarés dans glyria.config.ts exposent également leurs exports comme variables globales, sous un espace de noms en PascalCase dérivé du nom du package.
// glyria.config.ts
export default defineGlyriaConfig({
modules: ["@glyria/timers"]
})
// src/commands/remind.ts — aucun import nécessaire
Timers.createJob(() => {
console.log("s'exécute chaque minute")
}, "* * * * *")
| Package | Espace de noms |
|---|---|
@glyria/timers | Timers.* |
@glyria/economy | Economy.* |
@glyria/moderation | Moderation.* |
L'espace de noms correspond toujours au nom du package sans son scope, converti en PascalCase. @glyria/timers → Timers, @glyria/some-feature → SomeFeature.
::
Régénération des auto-imports
Les auto-imports sont régénérés automatiquement en mode développement. Si vous ajoutez un nouvel utilitaire en production, exécutez :
npx glyria generate
Pour que l'autocomplétion fonctionne, assurez-vous que votre fichier tsconfig.json inclut le dossier .glyria/ :
{
"include": ["src/**/*", ".glyria/**/*"]
}
::
Le fichier .glyria/imports.d.ts est généré automatiquement et sera écrasé à chaque exécution de glyria generate ou glyria dev. Ne le modifiez jamais manuellement.
::

