Перейти к содержимому

Файл конфигурации

По умолчанию tsdown будет искать файл конфигурации, просматривая текущий рабочий каталог и поднимаясь вверх по родительским директориям, пока не найдет один из них. Поддерживаются следующие имена файлов:

  • tsdown.config.ts
  • tsdown.config.mts
  • tsdown.config.cts
  • tsdown.config.js
  • tsdown.config.mjs
  • tsdown.config.cjs
  • tsdown.config.json
  • tsdown.config Кроме того, вы можете определить свою конфигурацию непосредственно в поле tsdown вашего файла package.json.

Написание файла конфигурации

Файл конфигурации позволяет определять и настраивать параметры сборки централизованно и с возможностью повторного использования. Ниже приведен простой пример файла конфигурации tsdown:

ts
import { defineConfig } from 'tsdown'

export default defineConfig({
  entry: 'src/index.ts',
})

Создание нескольких выходных файлов

tsdown также поддерживает возврат массива конфигураций из файла конфигурации. Это позволяет создавать несколько выходных файлов с разными настройками за один запуск. Например:

ts
import { defineConfig } from 'tsdown'

export default defineConfig([
  {
    entry: 'src/entry1.ts',
    platform: 'node',
  },
  {
    entry: 'src/entry2.ts',
    platform: 'browser',
  },
])

Указание пользовательского файла конфигурации

Если ваш файл конфигурации находится в другом месте или имеет другое имя, вы можете указать его путь с помощью опции --config (или -c):

bash
tsdown --config ./path/to/config

Отключение файла конфигурации

Чтобы полностью отключить загрузку файла конфигурации, используйте опцию --no-config:

bash
tsdown --no-config

Это полезно, если вы хотите полагаться исключительно на параметры командной строки или настройки по умолчанию.

Загрузчики конфигурации

tsdown поддерживает несколько способов загрузки конфигурационных файлов, чтобы работать с разными форматами. Выбор загрузчика выполняется с помощью опции --config-loader. Доступны следующие варианты:

  • auto (по умолчанию): использует встроенную поддержку TypeScript в среде выполнения (если она есть), в противном случае переключается на загрузчик unconfig.
  • native: загружает конфигурационные файлы TypeScript с помощью нативной поддержки среды (требуется современная среда, например, последние версии Node.js, Deno или Bun).
  • unconfig: использует библиотеку unconfig для загрузки конфигураций, что обеспечивает широкую совместимость с разными средами выполнения.
  • unrun (экспериментально): загружает файлы конфигурации с помощью библиотеки unrun, обеспечивающей совместимость, схожую с unconfig, но с более высокой производительностью. Установите пакет unrun, чтобы использовать этот загрузчик.

TIP

Node.js по умолчанию не поддерживает импорт файлов TypeScript без указания расширения .ts. Если используется Node.js и нужно загрузить файл конфигурации TypeScript без расширения, рекомендуется применять загрузчик unconfig или unrun для удобства и совместимости.

Расширение конфигурации Vite или Vitest (экспериментально)

tsdown предоставляет экспериментальную функцию для расширения существующих файлов конфигурации Vite или Vitest. Это позволяет повторно использовать определенные параметры конфигурации, такие как resolve и plugins, игнорируя другие, не относящиеся к tsdown.

Чтобы включить эту функцию, используйте опцию --from-vite:

bash
tsdown --from-vite        # Загрузить vite.config.*
tsdown --from-vite vitest # Загрузить vitest.config.*

Эта функция является **экспериментальной** и может не поддерживать все параметры конфигурации Vite или Vitest. Повторно используются только определенные опции, такие как `resolve` и `plugins`. Используйте с осторожностью и тщательно тестируйте в своем проекте.

Расширение конфигураций Vite или Vitest может сэкономить время и усилия, если ваш проект уже использует эти инструменты, позволяя строить на основе существующей настройки без дублирования конфигурации.

Справка

Полный список доступных параметров конфигурации см. в Справочнике по параметрам конфигурации. Это включает подробные объяснения всех поддерживаемых полей и их использования.

Распространяется под лицензией MIT.