# Package 配置说明

## 当前配置：源码模式

此包目前使用**源码模式**（Source-First）配置，直接引用 TypeScript 源文件。

### 当前配置

```json
{
  "main": "src/index.ts",
  "types": "src/index.ts",
  "exports": {
    ".": {
      "import": "./src/index.ts",
      "require": "./src/index.ts",
      "types": "./src/index.ts"
    }
  },
  "files": ["src"]
}
```

### 为什么使用源码模式？

1. **Monorepo Workspace 优化** - 在 pnpm workspace 中，消费者项目可以直接引用源码，无需等待编译

2. **更好的 IDE 支持** - TypeScript 源码提供完整的类型信息和 JSDoc 注释

3. **更快的开发迭代** - 修改源码后无需重新构建即可在消费者项目中看到变化

4. **现代构建工具支持** - Vite、Webpack、esbuild 等工具可以直接处理 TypeScript

### 局限性

- 源码模式仅适用于 monorepo 内部使用
- 如果发布到 npm，需要切换到编译产物模式

## 未来发布到 npm

如果需要将此包发布到 npm，需要以下更改：

### 1. 更新 package.json

```json
{
  "main": "./dist/index.js",
  "types": "./dist/index.d.ts",
  "exports": {
    ".": {
      "import": "./dist/index.js",
      "require": "./dist/index.js",
      "types": "./dist/index.d.ts"
    }
  },
  "files": ["dist"]
}
```

### 2. 更新 tsconfig.json

确保 `declaration` 和 `declarationMap` 已启用：

```json
{
  "compilerOptions": {
    "declaration": true,
    "declarationMap": true,
    "outDir": "./dist"
  }
}
```

### 3. 发布前构建

```bash
# 运行构建
pnpm build

# 验证 dist 目录
ls -la dist/

# 发布到 npm
pnpm publish
```

## 编译脚本

包提供了以下编译相关脚本：

```bash
# 构建包（输出到 dist/）
pnpm build

# 开发模式（监听文件变化）
pnpm dev

# 类型检查（不生成文件）
pnpm typecheck
```

## Workspace vs NPM

| 特性 | Workspace 源码模式 | NPM 编译模式 |
|------|-------------------|-------------|
| 入口 | `src/index.ts` | `dist/index.js` |
| 发布 | 不发布 | 发布到 npm |
| 类型 | 源码 .ts 文件 | .d.ts 声明文件 |
| 用途 | Monorepo 内部 | 公共包 |
| 构建 | 可选 | 必需 |

## 迁移检查清单

如果需要从源码模式迁移到编译模式：

- [ ] 更新 `package.json` 中的 `main`, `types`, `exports`, `files`
- [ ] 确保 `tsconfig.json` 启用 `declaration` 和 `declarationMap`
- [ ] 运行 `pnpm build` 生成编译产物
- [ ] 验证 `dist/` 目录结构
- [ ] 更新 `files` 字段为 `["dist"]`
- [ ] 测试导入是否正常工作
- [ ] 更新 README.md 中的安装说明（移除 `@workspace:*`）
