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

如何创建指向src/dist目录的共享TypeScript NPM包?

解决纯TypeScript类型包移至src目录后的模块查找问题

1. 完善package.json核心字段配置

纯类型包仅设置main不足以让TypeScript识别类型,必须补充types字段指定类型入口,同时建议通过files字段明确发布文件范围:

{
  "name": "my-package",
  "version": "1.0.0",
  "description": "Shared type definitions",
  "type": "module",
  "main": "./src/index.ts",
  "types": "./src/index.ts", // 关键:指定类型入口文件
  "source": "./src/index.ts",
  "files": [ // 限定npm包包含的文件,避免遗漏源码
    "src/**/*.ts"
  ],
  "scripts": {
    "tsc": "tsc --noEmit",
    "build": "tsc --emitDeclarationOnly" // 可选:生成d.ts文件用于正式发布
  },
  "license": "ISC",
  "devDependencies": {
    "typescript": "^4.8.4"
  }
}

2. 配置tsconfig.json规范源码结构

在包根目录创建tsconfig.json,确保TypeScript能正确解析src下的文件:

{
  "compilerOptions": {
    "declaration": true, // 开启d.ts文件生成(推荐用于正式发布)
    "declarationDir": "./dist", // 若生成d.ts,指定输出目录
    "rootDir": "./src", // 标记源码根目录
    "strict": true,
    "module": "ESNext",
    "moduleResolution": "NodeNext",
    "target": "ESNext"
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules"]
}

如果选择生成d.ts文件,需同步修改package.json的main和types指向dist目录:

{
  "main": "./dist/index.d.ts",
  "types": "./dist/index.d.ts"
}

修改后执行npm run build生成dist目录的类型文件。

3. 本地链接测试的修复步骤

  • 在类型包根目录先执行npm install和npm run build(若有build步骤),再重新执行npm link。
  • 在消费项目(project A)中,先执行npm unlink my-package清除旧链接缓存,再重新执行npm link my-package。
  • 检查消费项目的tsconfig.json,确保moduleResolution设置为NodeNext或Node16,与类型包的module配置保持一致,避免模块解析逻辑冲突。

4. 验证类型导出正确性

确保src/index.ts正确导出所有类型:

// src/index.ts
export * from './types/restaurant';
export * from './types/menus';

在project A中测试导入:

import type { Restaurant, Menu } from 'my-package';

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 14:10:30