Bien démarrer

Auto-imports

Utilisez les utilitaires de glyria.js partout sans écrire une seule instruction d’import.

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

GlobalDescription
GlyriaClientLe client du bot Discord
commandBuilder de commandes slash
embedV2Builder d’Embed V2
defineConfigHelper de configuration

discord.js

GlobalDescription
GatewayIntentBitsIntents 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")
}, "* * * * *")
PackageNamespace
@glyria/timersTimers.*
@glyria/economyEconomy.*
@glyria/moderationModeration.*
Le namespace correspond toujours au nom du package sans le scope, converti en PascalCase. @glyria/timersTimers, @glyria/some-featureSomeFeature.

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
Pour que l’autocomplétion fonctionne, assurez-vous que votre 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.
Copyright © 2026