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

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

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

Пожалуйста, проверяйте сгенерированные поля перед публикацией пакета или используйте publint для их проверки.

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

По умолчанию экспортируются только файлы точек входа. Если вы хотите экспортировать все файлы (включая те, которые не указаны как точки входа), вы можете включить опцию 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, позволяющей контролировать, какие условия используют исходный код.

Экспорт CSS ​

Когда параметр css.splitting установлен в значение false, сгенерированный CSS‑файл автоматически добавляется в exports:

ts
export default defineConfig({
  css: {
    splitting: false,
  },
  exports: true,
})

Имя CSS‑файла по умолчанию — style.css, его можно переопределить через опцию css.fileName.

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

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

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

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