# General Translation Integrations: Résolution des importations
URL: https://generaltranslation.com/fr/docs/integrations/paraglide/guides/resolving-imports.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Comment faire en sorte que l’analyse suive les alias d’importation de votre application jusqu’à ses fichiers Paraglide JS.

Une importation n’est considérée comme Paraglide JS que si elle se résout vers un fichier Paraglide JS. Un alias que l’analyse ne connaît pas, tel que `~/paraglide/messages.js`, masque toutes les utilisations qui passent par lui. Consultez ce guide lorsqu’une exécution signale des importations non résolues ou détecte moins d’utilisations que prévu.

## Vérifier la provenance des alias [#alias-sources]

Les importations sont résolues comme le ferait votre bundler, sans l’exécuter. Les alias proviennent des sources suivantes, dans cet ordre :

1. L’option [`alias`](/docs/integrations/paraglide/reference/collect-context#alias).
2. Le premier fichier `vite.config.*`, `webpack.config.*` ou `rspack.config.*` trouvé dans le répertoire racine ou à la racine du projet.
3. `paths` dans `tsconfig.json` et `imports` dans `package.json`.

Les configurations des bundlers ne sont pas lues de la même manière :

* **Vite :** c’est l’instance Vite de votre projet qui résout la configuration : les alias ajoutés par des plugins (`$lib` de SvelteKit) et les chemins relatifs à la racine (`/src/a.js`) fonctionnent donc.
* **webpack et rspack :** le fichier de configuration est importé. Les alias à correspondance exacte (`name$`) et ceux avec caractère générique (`"@/*"`) fonctionnent. Une configuration TypeScript nécessite une version de Node.js capable d’exécuter du TypeScript.

Les configurations de Next.js, Nuxt et Astro ne sont pas lues. Leurs alias proviennent de `tsconfig.json`.

## Déclarer un alias [#declare-alias]

Ajoutez un alias qu&#39;aucune configuration ne déclare, ou remplacez-en un existant. Vos propres alias sont testés avant ceux de la configuration.

<Tabs items={['CLI', 'Bibliothèque']}>
  <Tab value="CLI">
    ```bash
    # Un remplacement relatif se résout à partir de la racine du projet
    npx paraglide-context --alias ~=./src --alias @ui=./packages/ui/src
    ```
  </Tab>

  <Tab value="Bibliothèque">
    ```ts
    import path from 'node:path';
    import { collectContext } from '@generaltranslation/paraglide-js/compiler';

    await collectContext({
      // Les remplacements sont des chemins absolus
      alias: { '~': path.resolve('src') },
    });
    ```
  </Tab>
</Tabs>

## Corriger les importations non résolues [#unresolved]

Lorsqu&#39;aucune configuration de bundler n&#39;a pu être lue, l&#39;exécution se termine par un avertissement qui liste les importations non résolues, car il peut s&#39;agir d&#39;alias non déclarés. Pour chacune d&#39;elles :

1. Déclarez-la avec `--alias`, ou ajoutez-la à `paths` dans `tsconfig.json`.
2. Relancez `paraglide-context --verbose`. Le résumé indique la configuration d&#39;où proviennent les alias.

Si une configuration de bundler existe mais plante lorsqu&#39;elle est chargée en dehors d&#39;une compilation, ignorez-la avec `--no-bundler-config` et déclarez vous-même les alias.

## Lire la configuration d&#39;un autre bundler [#bundler-config]

Ajoutez un [`BundlerConfig`](/docs/integrations/paraglide/reference/extension-api#bundler-configs) pour lire les alias d&#39;une configuration non prise en charge par défaut. [`webpackLikeConfig`](/docs/integrations/paraglide/reference/extension-api#bundler-configs) en crée un pour un fichier au format webpack :

```ts
import {
  collectContext,
  defaultBundlerConfigs,
  webpackLikeConfig,
} from '@generaltranslation/paraglide-js/compiler';

await collectContext({
  bundlerConfigs: [
    ...defaultBundlerConfigs,
    // Lit resolve.alias dans webpack.prod.js, .mjs, .ts, …
    webpackLikeConfig('webpack (production)', 'webpack.prod'),
  ],
});
```

Pour tout autre format, écrivez vous-même la fonction `read` :

```ts
import { readFile } from 'node:fs/promises';
import {
  collectContext,
  defaultBundlerConfigs,
  type BundlerConfig,
} from '@generaltranslation/paraglide-js/compiler';

const aliasFile: BundlerConfig = {
  name: 'aliases.json',
  files: ['aliases.json'], // recherché dans la racine et dans la racine du projet
  async read(file) {
    // { "~": "/app/src" }
    const entries = Object.entries(JSON.parse(await readFile(file, 'utf8')));

    return {
      aliases: entries.map(([find, replacement]) => ({
        find,
        replacement: String(replacement),
      })),
    };
  },
};

await collectContext({ bundlerConfigs: [...defaultBundlerConfigs, aliasFile] });
```

Seule la première configuration trouvée est lue. En cas d&#39;échec d&#39;un `read`, un avertissement est émis et la configuration est ignorée.

## Utiliser un autre résolveur [#custom-resolver]

Pour remplacer entièrement la résolution des importations, créez vous-même le collecteur et passez-lui un [`Resolver`](/docs/integrations/paraglide/reference/extension-api#resolvers) : une fonction qui renvoie le fichier vers lequel une importation se résout, ou rien.

```ts
import {
  createCollector,
  nodeResolver,
} from '@generaltranslation/paraglide-js/compiler';

const fallback = nodeResolver();

const collector = createCollector(
  { include: ['src'] },
  {
    root: process.cwd(),
    logger: console,
    resolver: async (specifier, importer) =>
      specifier === 'virtual:messages'
        ? '/app/src/paraglide/messages.js'
        : fallback(specifier, importer),
  }
);

await collector.scanAll(); // analyser
await collector.write(); // écrire les fichiers de métadonnées
```

## Que choisir et dans quel cas [#what-to-use]

* **`--alias` ou `alias`** : quelques alias qu&#39;aucune configuration ne déclare.
* **`paths` de `tsconfig.json`** : des alias que votre éditeur et votre vérificateur de types doivent également connaître.
* **Un `BundlerConfig`** : des alias déjà définis dans le fichier de configuration d&#39;un autre bundler.
* **Un `Resolver`** : une résolution que les alias ne permettent pas d&#39;exprimer, comme les modules virtuels.

## Next steps

- /docs/integrations/paraglide/guides/adding-file-formats

## Sitemap

See the full [sitemap](https://generaltranslation.com/sitemap.md) for all pages.
