Автоматическая генерация экспортов пакета
tsdown
предоставляет экспериментальную функцию для автоматического определения и генерации полей exports
, main
, module
и types
в вашем package.json
. Это помогает гарантировать, что экспорты вашего пакета всегда актуальны и точно соответствуют результатам сборки.
Как включить автоэкспорты
Вы можете включить эту функцию, установив параметр exports: true
в файле конфигурации tsdown
:
import { defineConfig } from 'tsdown'
export default defineConfig({
exports: true,
})
Это автоматически проанализирует точки входа и выходные файлы, и обновит ваш package.json
.
WARNING
Это экспериментальная функция. Пожалуйста, проверяйте сгенерированные поля перед публикацией пакета.
Экспорт всех файлов
По умолчанию экспортируются только файлы точек входа. Если вы хотите экспортировать все файлы (включая те, которые не указаны как точки входа), вы можете включить опцию exports.all
:
export default defineConfig({
exports: {
all: true,
},
})
Это добавит все соответствующие файлы в поле exports
.
Связь с исходным кодом при разработке
Экспорты для разработки
Во время разработки вам может понадобиться, чтобы exports
указывали непосредственно на ваши исходные файлы для лучшей отладки и поддержки редактора. Вы можете включить это, установив exports.devExports
в true
:
export default defineConfig({
exports: {
devExports: true,
},
})
С этой настройкой сгенерированные exports
в вашем package.json
будут ссылаться на ваш исходный код. Экспорты для собранного вывода будут записаны в publishConfig
, который переопределит поле exports
верхнего уровня при использовании команд pack
/publish
в yarn
или pnpm
(обратите внимание: это не работает с npm).
Условные экспорты для разработки
Вы также можете задать для exports.devExports
строковое значение, чтобы ссылаться на исходники только при определенном условии:
export default defineConfig({
exports: {
devExports: 'development',
},
})
Это особенно полезно в сочетании с опцией TypeScript customConditions
, позволяющей контролировать, какие условия используют исходный код.
Настройка экспортов
Если вам нужен более тонкий контроль над генерируемыми экспортами, используйте пользовательскую функцию через exports.customExports
:
export default defineConfig({
exports: {
customExports(pkg, context) {
pkg['./foo'] = './foo.js'
return pkg
},
},
})