Skip to content

自动生成包导出

tsdown 提供了一个实验性功能,可以自动推断并生成 package.json 中的 exportsmainmoduletypes 字段。这有助于确保您的包导出始终与构建输出保持同步且正确。

启用自动导出

您可以在 tsdown 配置文件中设置 exports: true 来启用此功能:

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 字段中。

开发时源码链接

开发导出(Dev Exports)

在开发过程中,您可能希望 exports 字段直接指向源码文件,以便更好地调试和获得编辑器支持。可以通过设置 exports.devExportstrue 来启用:

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

启用后,package.json 中生成的 exports 字段会链接到您的源码。构建产物的导出信息会写入 publishConfig 字段,在使用 yarnpnpmpack/publish 命令时会覆盖顶层的 exports 字段(注意:npm 不支持此特性)。

条件开发导出(Conditional Dev Exports)

您还可以将 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
    },
  },
})

Released under the MIT License.