You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TypeScript公共包pub中暴露私有包priv的类型?

可行替代方案

1. 直接在pub包中导入priv的类型定义文件

不需要额外拆出priv-types包,直接在pub的tsconfig.json里配置include或者paths,指向priv的类型输出目录(比如priv/dist/types)。注意要点:

  • 确保priv编译时开启declaration: true,生成.d.ts类型文件
  • 在pub的package.json中,把priv设为devDependencies(仅用于类型依赖,无需运行时引入),同时在peerDependencies声明对priv类型的版本要求,避免类型版本不匹配
  • 发布pub时无需打包priv的类型文件,仅保留tsconfig中的配置指向即可

2. 使用TypeScript的typeRoots配置

在pub的tsconfig.json中,将priv的类型目录添加到typeRoots数组,TypeScript会自动识别该目录下的类型定义。适合priv类型结构规整的场景,比如所有.d.ts文件统一放在types文件夹下。

3. 类型重导出+打包剥离运行时代码

在pub中创建类型入口文件(比如src/types/index.ts),直接重导出priv的所有类型:

// pub/src/types/index.ts
export * from 'priv';

随后在pub的package.json中将priv设为devDependencies,并通过TypeScript的isolatedModules配置或打包工具(如Rollup、esbuild)设置只保留类型导出,剥离所有运行时相关代码。发布后的pub仅包含类型定义,不会引入priv的运行时依赖,用户安装后可直接使用priv的所有类型。

4. 利用tsc --emitDeclarationOnly同步类型

无需单独维护priv-types仓库,可在priv的构建脚本中添加步骤,用tsc --emitDeclarationOnly生成纯类型文件,再通过脚本将这些文件同步到pub的类型目录下。这种方式既不用额外建包,也能保证pub的类型与priv完全同步,省去维护独立类型包的成本。


内容的提问来源于stack exchange,提问作者Remirror

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 15:31:12