# General Translation Integrations: collectContext
URL: https://generaltranslation.com/ru/docs/integrations/paraglide/reference/collect-context.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Анализирует приложение и записывает контекст исходного кода для сообщений Paraglide JS на основе кода. Справочник API для collectContext.

Импортируйте функцию из `@generaltranslation/paraglide-js/compiler`. Корневой модуль пакета ничего не экспортирует. Команда [`paraglide-context`](/docs/integrations/paraglide/reference/paraglide-context) вызывает эту функцию с вариантами, сформированными из переданных ей флагов.

## Обзор [#overview]

```ts
function collectContext(options?: CollectContextOptions): Promise<void>;
```

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

await collectContext({ root: './apps/web', include: ['src'] });
```

Промис успешно завершается после записи файлов метаданных. Проблемы, из-за которых пропускается файл, формат или каталог, выводятся через [`logger.warn`](#logger) и не приводят к отклонению промиса. Промис отклоняется, если записать файл метаданных не удалось.

## Параметры [#options]

Пути указываются относительно корневого каталога проекта — каталога с ближайшим `package.json`, начиная с [`root`](#root) и выше.

| Параметр                             | Описание                                                                    | Тип                          | Необязательный | По умолчанию                                 |
| ------------------------------------ | --------------------------------------------------------------------------- | ---------------------------- | -------------- | -------------------------------------------- |
| [`root`](#root)                      | Проект или каталог внутри него.                                             | `string`                     | Да             | Рабочий каталог                              |
| [`include`](#include)                | Пути или glob-шаблоны для анализа.                                          | `string[]`                   | Да             | Весь проект                                  |
| [`exclude`](#exclude)                | Пути или glob-шаблоны, которые нужно пропустить.                            | `string[]`                   | Да             | `DEFAULT_EXCLUDE`                            |
| [`radius`](#radius)                  | Число строк контекста выше и ниже каждого использования.                    | `number`                     | Да             | `10`                                         |
| [`outdirs`](#outdirs)                | Выходные каталоги Paraglide JS, используемые без проверки.                  | `string[]`                   | Да             | Определяются автоматически                   |
| [`inlangProjects`](#inlang-projects) | Каталоги проектов inlang, для сообщений которых создаются файлы метаданных. | `string[]`                   | Да             | Определяются автоматически                   |
| [`autoImports`](#auto-imports)       | Имена, доступные без импорта.                                               | `false \| AutoImportOptions` | Да             | Определяются автоматически                   |
| [`alias`](#alias)                    | Алиасы импорта.                                                             | `AliasOption`                | Да             | —                                            |
| [`bundlerConfigs`](#bundler-configs) | Конфигурации сборщика, из которых считываются алиасы.                       | `BundlerConfig[]`            | Да             | `defaultBundlerConfigs`                      |
| [`rootDirectory`](#root-directory)   | Каталог, относительно которого разрешаются корневые пути вроде `/src/a.js`. | `string`                     | Да             | Корневой каталог из конфигурации сборщика    |
| [`conditions`](#conditions)          | Условия экспорта пакета.                                                    | `string[]`                   | Да             | `["import", "module", "browser", "default"]` |
| [`targets`](#targets)                | Что считается кодом Paraglide JS.                                           | `ParaglideTarget[]`          | Да             | `defaultTargets`                             |
| [`languages`](#languages)            | Форматы файлов помимо JavaScript и TypeScript.                              | `SourceLanguage[]`           | Да             | `defaultLanguages`                           |
| [`logger`](#logger)                  | Получает предупреждения и итоговую сводку.                                  | `CollectorLogger`            | Да             | Предупреждения выводятся в `console.warn`    |

## `root` [#root]

**Тип** `string` · **Необязательный** · **По умолчанию** рабочий каталог

Проект или каталог внутри него, например одно из приложений монорепозитория. Конфигурации сборщика ищутся в этом каталоге и в корневом каталоге проекта. Проекты inlang ищутся начиная с этого каталога и выше, вплоть до корневого каталога монорепозитория.

## `include` [#include]

**Тип** `string[]` · **Необязательный** · **По умолчанию** весь проект

Пути или glob-шаблоны для анализа. Путь за пределами проекта анализируется, если он указан явно (`../shared`). Если запись указывает на несуществующий путь, выводится предупреждение.

Независимо от содержимого `include`, всегда пропускаются: `node_modules`, результаты сборки и выходные файлы фреймворков, а также файлы, игнорируемые `.gitignore`.

## `exclude` [#exclude]

**Тип** `string[]` · **Необязательный** · **По умолчанию** `DEFAULT_EXCLUDE`

Пути или glob-шаблоны, которые нужно пропустить. Заданное значение заменяет значение по умолчанию, при котором пропускаются тесты и конфигурационные файлы инструментов:

```ts
import { DEFAULT_EXCLUDE } from '@generaltranslation/paraglide-js/compiler';

// *.config.?(c|m)[jt]s, **/*.{test,spec}.?(c|m)[jt]s?(x), **/__tests__/**,
// **/__mocks__/**, test/**, tests/**, e2e/**, cypress/**, playwright/**
await collectContext({ exclude: [...DEFAULT_EXCLUDE, 'src/stories/**'] });
```

## `radius` [#radius]

**Тип** `number` · **Необязательный** · **По умолчанию** `10`

Количество строк исходного кода над и под каждым местом использования, которые сохраняются в полях `before` и `after` соответствующей [записи метаданных](/docs/integrations/paraglide/reference/metadata-files#format).

## `outdirs` [#outdirs]

**Тип** `string[]` · **Необязательный** · **По умолчанию** определяется автоматически

Выходные каталоги Paraglide JS, которые следует использовать без проверки. Если этот вариант не задан, выходные каталоги [определяются автоматически](/docs/integrations/paraglide/reference/usage-detection#outdirs). Задайте его, если появилось предупреждение о том, что каталог не был распознан как выходной.

## `inlangProjects` [#inlang-projects]

**Тип** `string[]` · **Необязательный** · **По умолчанию** определяется автоматически

Каталоги проектов inlang, например `project.inlang`. Для каждого файла сообщений базовой локали проекта создаётся файл метаданных. Если этот параметр задан, он заменяет [поиск проекта для каждого выходного каталога](/docs/integrations/paraglide/reference/usage-detection#inlang-projects).

## `autoImports` [#auto-imports]

**Тип** `false | AutoImportOptions` · **Необязательный** · **По умолчанию** определяется автоматически

Имена, которые приложение использует без импорта. Каждый ключ — это имя, а значение — модуль, который его экспортирует (путь относительно корневого каталога проекта), либо `{ from, export }`, если экспортируемое имя отличается.

```ts
await collectContext({
  autoImports: {
    m: './src/paraglide/messages.js',
    t: { from: './src/i18n.js', export: 'translate' },
  },
});
```

Автоимпорты unplugin-auto-import, unplugin-vue-components и Nuxt считываются из сгенерированных ими файлов `.d.ts` даже без этого варианта. Значение `false` отключает и автоматическое обнаружение, и сам вариант.

## `alias` [#alias]

**Тип** `AliasOption` · **Необязательный** · **По умолчанию** —

Алиасы импорта — аналог `resolve.alias` в сборщике. Задаётся либо объектом, сопоставляющим имена с заменами, либо списком `{ find, replacement, exact? }`, где `find` — строка или `RegExp`. Эти алиасы проверяются раньше алиасов из конфигурации сборщика.

```ts
await collectContext({
  alias: [
    { find: '~', replacement: '/app/src' }, // ~ и ~/…
    { find: 'config', replacement: '/app/src/config.ts', exact: true }, // только config (точное совпадение)
    { find: /^@ui\/(.*)$/, replacement: '/app/packages/ui/src/$1' },
  ],
});
```

(См. [Разрешение импортов](/docs/integrations/paraglide/guides/resolving-imports)).

## `bundlerConfigs` [#bundler-configs]

**Тип** `BundlerConfig[]` · **Необязательный** · **По умолчанию** `defaultBundlerConfigs`

Конфигурации сборщиков, из которых считываются алиасы импортов: по умолчанию Vite, webpack и rspack. Считывается только первый найденный файл конфигурации. При значении `[]` ничего не считывается. Чтобы добавить свою конфигурацию, см. [`BundlerConfig`](/docs/integrations/paraglide/reference/extension-api#bundler-configs).

## `rootDirectory` [#root-directory]

**Тип** `string` · **Необязательный** · **По умолчанию** корневой каталог из конфигурации сборщика

Каталог, от которого разрешаются корневые пути вроде `/src/a.js`, — аналог `root` в Vite. Значение берётся из конфигурации Vite. Если её нет, корневые пути разрешаются как пути в файловой системе.

## `conditions` [#conditions]

**Тип** `string[]` · **Необязательный** · **По умолчанию** `["import", "module", "browser", "default"]`

Условия, по которым выбирается запись в полях `exports` и `imports` пакета.

## `targets` [#targets]

**Тип** `ParaglideTarget[]` · **Необязательный** · **По умолчанию** `defaultTargets`

Определяет, какие разрешённые файлы относятся к Paraglide JS и чем является каждый из их экспортов (см. [Targets](/docs/integrations/paraglide/reference/extension-api#targets)).

## `languages` [#languages]

**Тип** `SourceLanguage[]` · **Необязательный** · **По умолчанию** `defaultLanguages`

Форматы файлов, которые анализируются помимо JavaScript, TypeScript и JSX. (См. [Поддерживаемые форматы файлов](/docs/integrations/paraglide/reference/file-formats) и [Добавление форматов файлов](/docs/integrations/paraglide/guides/adding-file-formats).)

## `logger` [#logger]

**Тип** `CollectorLogger` · **Необязательный** · **По умолчанию** предупреждения выводятся в `console.warn`

Объект с методами `warn(message)` и `info(message)`. Предупреждения сообщают о том, что было пропущено. `info` получает сводку и конфигурацию, из которой были прочитаны алиасы; логгер по умолчанию эти сообщения игнорирует.

```ts
await collectContext({ logger: console }); // предупреждения и сводка
```

## Пример [#example]

Перед переводом соберите контекст одного приложения в монорепозитории, включая общий пакет:

```ts title="scripts/collect-context.ts"
import {
  collectContext,
  DEFAULT_EXCLUDE,
} from '@generaltranslation/paraglide-js/compiler';

await collectContext({
  root: './apps/web',
  include: ['src', '../../packages/ui/src'],
  exclude: [...DEFAULT_EXCLUDE, '**/*.stories.tsx'],
  radius: 5,
  logger: console,
});
```

## Sitemap

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