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

已fork模块foo并重命名为@org/foo,如何映射@types/foo无需fork@types?

问题翻译

我fork了一个大型模块foo,它配套有类型声明库@types/foo。我把新fork的模块重命名为@org/foo,而且这个fork版本的类型声明不需要做任何改动。请问能不能直接把@types/foo映射到新的模块名称@org/foo(比如创建@org/types-foo),而不需要fork整个@types模块?


解决方案

当然可以,完全不需要fork整个@types仓库,以下是几种实用的实现方式:

1. 直接在@org/foo的package.json中指定类型

在你重命名后的@org/foo模块的package.json里,直接将类型声明指向已安装的@types/foo:

{
  "name": "@org/foo",
  "types": "./node_modules/@types/foo/index.d.ts",
  // 其他包配置字段...
}

这样当项目同时安装@org/foo和@types/foo后,TypeScript会自动识别到对应的类型声明。

2. 创建轻量转发型@org/types-foo包

如果想把类型声明归到自己的组织名下,可以创建一个极简的转发包,无需复制原类型文件:

  • 新建项目,package.json配置如下:
{
  "name": "@org/types-foo",
  "version": "1.0.0",
  "main": "index.d.ts",
  "types": "index.d.ts",
  "dependencies": {
    "@types/foo": "^x.x.x" // 声明对原类型包的依赖
  }
}
  • 在index.d.ts中直接导出原类型:
export * from '@types/foo';

将这个包发布到npm仓库后,使用@org/foo时只需安装@org/types-foo,TypeScript会自动关联类型。

3. 项目内通过tsconfig.json路径映射

如果仅在个人项目中使用,无需改动包或发布新类型包,可以在项目的tsconfig.json里配置路径映射:

{
  "compilerOptions": {
    "paths": {
      "@org/foo": ["node_modules/@types/foo"]
    }
  }
}

这种方式仅对当前项目生效,适合快速测试或局部使用场景。

注意:无论采用哪种方式,都需要确保项目中已安装@types/foo依赖,否则会出现类型找不到的错误。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 09:12:22