Корневая директория
Опция 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 влияет на два аспекта:
- Разрешение имён точек входа: если
entryзадан массивом, выходные имена файлов определяются по путям относительноroot. - Режим 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 и вам нужен более точный контроль над отображением структуры исходников в директорию вывода.