Auto-imports
Que sont les auto-imports ?
Dans un projet TypeScript classique, vous devez importer manuellement chaque fonction ou classe que vous utilisez :
import { command } from "@glyria/bot"
import { embedV2 } from "@glyria/bot"
import { GlyriaClient } from "@glyria/bot"
glyria.js élimine totalement ce besoin. Chaque utilitaire du framework est automatiquement disponible globalement — aucun import nécessaire dans votre projet.
// aucun import — ça fonctionne directement
export default command()
.setName("ping")
.setDescription("Pong!")
.execute(async (ctx) => {
await ctx.reply({ content: "Pong!" })
})
Comment ça fonctionne
glyria.js utilise deux mécanismes qui travaillent ensemble :
Injection runtime — lorsque votre bot démarre, glyria.js injecte tous les utilitaires dans globalThis. Chaque fichier exécuté ensuite y a accès sans import.
Déclarations de types — glyria.js génère un fichier .glyria/imports.d.ts qui informe TypeScript de l’existence des globals. Cela vous donne l’autocomplétion complète et le typage dans votre IDE.
Globals disponibles
Framework
| Global | Description |
|---|---|
GlyriaClient | Le client du bot Discord |
command | Builder de commandes slash |
embedV2 | Builder d’Embed V2 |
defineConfig | Helper de configuration |
discord.js
| Global | Description |
|---|---|
GatewayIntentBits | Intents de gateway Discord |
Globals utilisateur
Toute fonction exportée depuis src/utils/ ou src/composables/ est également auto-importée.
// src/utils/useDatabase.ts
export const useDatabase = () => {
return {
find: (id: string) => { /* ... */ },
save: (data: any) => { /* ... */ },
}
}
// src/commands/ping.ts — aucun import requis
export default command()
.setName("ping")
.execute(async (ctx) => {
const db = useDatabase()
const user = await db.find(ctx.user.id)
})
Globals des modules
Les modules déclarés dans glyria.config.ts exposent également leurs exports comme des globals, sous un namespace en PascalCase dérivé du nom du package.
// glyria.config.ts
export default defineGlyriaConfig({
modules: ["@glyria/timers"]
})
// src/commands/remind.ts — aucun import requis
Timers.createJob(() => {
console.log("runs every minute")
}, "* * * * *")
| Package | Namespace |
|---|---|
@glyria/timers | Timers.* |
@glyria/economy | Economy.* |
@glyria/moderation | Moderation.* |
@glyria/timers → Timers, @glyria/some-feature → SomeFeature.Régénérer les auto-imports
Les auto-imports sont régénérés automatiquement en mode dev. Si vous ajoutez un nouvel utilitaire en production, exécutez :
npx glyria generate
tsconfig.json inclut le dossier .glyria/ :{
"include": ["src/**/*", ".glyria/**/*"]
}
.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.
