CLAUDE.md@by-scenario/open-source-lib · git:20260320.fcf2609 · 2026-03-20 · sha256 9f66adb736e39d98

CLAUDE.md@by-scenario/open-source-lib git:20260320.fcf2609A

Immutable. This exact content is served forever at /api/v1/blob/9f66adb736e39d98.

# 开源库项目

## 项目定位
- 面向开发者的开源工具库/组件库
- 发布到 npm / PyPI / crates.io 等公共仓库
- 重视 API 设计、文档质量、向后兼容性

## 项目结构(以 npm 包为例)
```
src/              # 源代码
  index.ts        # 公开 API 入口
  core/           # 核心实现
  utils/          # 内部工具函数
tests/            # 测试文件
docs/             # 文档或文档站源码
examples/         # 使用示例
CHANGELOG.md      # 变更日志
LICENSE           # 开源许可证
```

## 版本管理
- 语义化版本(SemVer):MAJOR(Breaking Change)/ MINOR(新功能)/ PATCH(修复)
- 使用 Changesets 或 Conventional Commits 管理,每次发版更新 CHANGELOG.md

## API 设计原则
- 最小化公开 API 面积,命名清晰一致,合理的默认值(零配置开箱使用)
- 超过 2 个可选参数时用 options 对象,确保 TypeScript 完整类型推导
- Breaking Change 提供迁移指南和 codemod(如可能)

## 文档要求
- README.md:安装方式、快速上手、核心 API 概览
- API 文档:每个公开函数/类的参数说明和使用示例
- 使用 TSDoc/JSDoc 注释,可自动生成 API 文档
- examples/ 目录提供可运行的完整示例

## 测试策略
- 单元测试覆盖所有公开 API 和边界情况
- 测试即文档:测试用例描述清晰,体现使用方式
- 运行测试:`npm test` 或 `pytest`
- 目标覆盖率 > 90%

## CI/CD 流程
- PR 检查:lint + type-check + test + build
- 发版流程:tag 触发 -> 构建 -> 发布到包管理器
- 自动化 release notes 生成

## 常用命令
```bash
npm run lint && npm run test && npm run build  # 发布前全量检查
npm pack --dry-run    # 检查发布内容(无多余文件)
npm publish           # 发布到 npm
```

## 常见陷阱
- 不要在补丁版本中引入 Breaking Change,会破坏用户信任
- `package.json` 的 `files` 字段控制发布内容,避免泄漏源码或测试文件
- 依赖尽量放 `peerDependencies`(如 React),避免重复安装
- `.npmignore` 与 `.gitignore` 独立维护,发布内容和仓库内容不同
- 导出格式同时提供 ESM 和 CJS(`exports` 字段配置双格式)
- 发布前在干净环境测试安装:`npx create-test-app && npm install your-lib`