Skip to content

Автоматическая генерация экспортов пакета

tsdown предоставляет экспериментальную функцию для автоматического определения и генерации полей exports, main, module и types в вашем package.json. Это помогает гарантировать, что экспорты вашего пакета всегда актуальны и точно соответствуют результатам сборки.

Как включить автоэкспорты

Вы можете включить эту функцию, установив параметр exports: true в файле конфигурации tsdown:

tsdown.config.ts
ts
import { defineConfig } from 'tsdown'

export default defineConfig({
  exports: true,
})

Это автоматически проанализирует точки входа и выходные файлы, и обновит ваш package.json.

WARNING

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

Экспорт всех файлов

По умолчанию экспортируются только файлы точек входа. Если вы хотите экспортировать все файлы (включая те, которые не указаны как точки входа), вы можете включить опцию exports.all:

ts
export default defineConfig({
  exports: {
    all: true,
  },
})

Это добавит все соответствующие файлы в поле exports.

Связь с исходным кодом при разработке

Экспорты для разработки

Во время разработки вам может понадобиться, чтобы exports указывали непосредственно на ваши исходные файлы для лучшей отладки и поддержки редактора. Вы можете включить это, установив exports.devExports в true:

ts
export default defineConfig({
  exports: {
    devExports: true,
  },
})

С этой настройкой сгенерированные exports в вашем package.json будут ссылаться на ваш исходный код. Экспорты для собранного вывода будут записаны в publishConfig, который переопределит поле exports верхнего уровня при использовании команд pack/publish в yarn или pnpm (обратите внимание: это не работает с npm).

Условные экспорты для разработки

Вы также можете задать для exports.devExports строковое значение, чтобы ссылаться на исходники только при определенном условии:

ts
export default defineConfig({
  exports: {
    devExports: 'development',
  },
})

Это особенно полезно в сочетании с опцией TypeScript customConditions, позволяющей контролировать, какие условия используют исходный код.

Настройка экспортов

Если вам нужен более тонкий контроль над генерируемыми экспортами, используйте пользовательскую функцию через exports.customExports:

ts
export default defineConfig({
  exports: {
    customExports(pkg, context) {
      pkg['./foo'] = './foo.js'
      return pkg
    },
  },
})

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