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

Корневая директория

Опция root задаёт корневую директорию исходных файлов, аналогично rootDir в TypeScript. Она определяет, как по точкам входа рассчитывается структура директорий в выводе.

Поведение по умолчанию

По умолчанию root вычисляется автоматически как общая базовая директория всех файлов точек входа. Например, если указаны src/a.ts и src/b.ts, корневой директорией будет src/.

Как настроить

ts
import { defineConfig } from 'tsdown'

export default defineConfig({
  entry: ['src/index.ts', 'src/utils/helper.ts'],
  root: 'src',
})

Или через CLI:

bash
tsdown --root src

Как это работает

Опция root влияет на два аспекта:

  1. Разрешение имён точек входа: если entry задан массивом, выходные имена файлов определяются по путям относительно root.
  2. Режим unbundle: в режиме unbundle значение root используется как preserveModulesRoot и управляет структурой директорий в выводе.

Пример

Допустим, у вас такая структура проекта:

project/
  src/
    index.ts
    utils/
      helper.ts

Без root (по умолчанию)

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

Общая базовая директория — src/, поэтому вывод будет таким:

dist/
  index.js
  utils/
    helper.js

С явно заданным root

ts
export default defineConfig({
  entry: ['src/index.ts', 'src/utils/helper.ts'],
  root: '.',
})

Здесь корневой директорией становится директория проекта, поэтому в выводе сохраняется префикс src/:

dist/
  src/
    index.js
    utils/
      helper.js

Когда использовать

  • Когда автоматически вычисленная общая базовая директория даёт не ту структуру вывода, которая вам нужна.
  • Когда вы хотите, чтобы в выходных путях сохранялись или исключались определённые префиксы директорий.
  • Когда вы используете режим unbundle и вам нужен более точный контроль над отображением структуры исходников в директорию вывода.

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