{"_id":"@ai-teacher/course","_rev":"2-bd372b551563749a80df8b754821abc3","name":"@ai-teacher/course","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@ai-teacher/course","version":"0.1.0","keywords":["course","player","education","react","typescript","reveal.js","ai-teacher"],"author":"","license":"MIT","_id":"@ai-teacher/course@0.1.0","maintainers":[{"name":"zero7room","email":"zero7room@126.com"}],"homepage":"https://github.com/your-org/ai-teacher/tree/main/packages/course","bugs":{"url":"https://github.com/your-org/ai-teacher/issues"},"dist":{"shasum":"f3ea9f7defead3503b48691384dcc783cfef3aed","tarball":"https://registry.npmjs.org/@ai-teacher/course/-/course-0.1.0.tgz","fileCount":9,"integrity":"sha512-MdL+XpJfE21OvB4CpbqIE33QlWJHK0tYO+2u7/JjXStAV2KVG4Ks6c9z+0wfozc3ijNVo1f6+oL5+TBVLZ3BRA==","signatures":[{"sig":"MEYCIQC4JXMhOSybii16MAOBJZxTk44GE4ick9igEisIM07KIQIhAMfT1a5lN7Yr8jrBkCxQfEvQ5w4dTZUGmZeoNv3R1537","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":637765},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","development":"./src/index.ts"}},"gitHead":"dfa4c0c026d2d473a23abd0664be207d01f77c8b","private":false,"scripts":{"build":"tsup","clean":"rm -rf dist","publish:beta":"npm version prerelease --preid=beta && npm publish --tag beta","publish:alpha":"npm version prerelease --preid=alpha && npm publish --tag alpha","version:major":"npm version major && npm publish","version:minor":"npm version minor && npm publish","version:patch":"npm version patch && npm publish","prepublishOnly":"pnpm build"},"_npmUser":{"name":"zero7room","email":"zero7room@126.com"},"repository":{"url":"git+https://github.com/your-org/ai-teacher.git","type":"git","directory":"packages/course"},"_npmVersion":"11.6.2","description":"AITeacher course player组件与类型，可独立发布到 npm","directories":{},"_nodeVersion":"24.11.1","dependencies":{"clsx":"^2.1.1","xstate":"^5.24.0","reveal.js":"^5.2.1","lucide-react":"^0.555.0","rough-notation":"^0.5.1","tailwind-merge":"^3.4.0","@radix-ui/react-slot":"^1.1.0","class-variance-authority":"^0.7.1","@codesandbox/sandpack-react":"^2.20.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5.6.3","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@types/reveal.js":"^5.2.1"},"peerDependencies":{"next":"^16.0.0","react":"^19.0.0","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/course_0.1.0_1766546869223_0.3936813902063421","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@ai-teacher/course","version":"0.1.1","private":false,"description":"AITeacher course player组件与类型，可独立发布到 npm","type":"module","main":"dist/index.js","module":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"development":"./src/index.ts","types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"build":"tsup","clean":"rm -rf dist","prepublishOnly":"pnpm build","version:patch":"npm version patch && npm publish","version:minor":"npm version minor && npm publish","version:major":"npm version major && npm publish","publish:beta":"npm version prerelease --preid=beta && npm publish --tag beta","publish:alpha":"npm version prerelease --preid=alpha && npm publish --tag alpha"},"keywords":["course","player","education","react","typescript","reveal.js","ai-teacher"],"author":"","license":"MIT","repository":{"type":"git","url":"git+https://github.com/your-org/ai-teacher.git","directory":"packages/course"},"bugs":{"url":"https://github.com/your-org/ai-teacher/issues"},"homepage":"https://github.com/your-org/ai-teacher/tree/main/packages/course","peerDependencies":{"next":"^16.0.0","react":"^19.0.0","react-dom":"^19.0.0"},"dependencies":{"@codesandbox/sandpack-react":"^2.20.0","@radix-ui/react-slot":"^1.1.0","class-variance-authority":"^0.7.1","clsx":"^2.1.1","lucide-react":"^0.555.0","reveal.js":"^5.2.1","rough-notation":"^0.5.1","tailwind-merge":"^3.4.0","xstate":"^5.24.0"},"devDependencies":{"@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@types/reveal.js":"^5.2.1","tsup":"^8.0.0","typescript":"^5.6.3"},"gitHead":"dfa4c0c026d2d473a23abd0664be207d01f77c8b","_id":"@ai-teacher/course@0.1.1","_nodeVersion":"24.11.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-sI4DnidZszQPQW5THmf0NdugMVa48ZvttuPEiXeYR4SLNMdiz+cLDMWuG+RFbjQSp5sFFWVNTd0QNl0WdBsUmA==","shasum":"57041d005a49d89ca67929bb3f2f8304ea51e12a","tarball":"https://registry.npmjs.org/@ai-teacher/course/-/course-0.1.1.tgz","fileCount":9,"unpackedSize":637765,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC3AJaq1JED7eVoAsLMi6sofz494FX77QhjGede8FpqwQIgfpAb4wumvP9wCH3ReTBqz1DQ1M1RGGS6OGH4S56/aGo="}]},"_npmUser":{"name":"zero7room","email":"zero7room@126.com"},"directories":{},"maintainers":[{"name":"zero7room","email":"zero7room@126.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/course_0.1.1_1766547039542_0.5581969093315544"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-24T03:27:49.125Z","modified":"2025-12-24T03:30:39.907Z","0.1.0":"2025-12-24T03:27:49.426Z","0.1.1":"2025-12-24T03:30:39.702Z"},"bugs":{"url":"https://github.com/your-org/ai-teacher/issues"},"license":"MIT","homepage":"https://github.com/your-org/ai-teacher/tree/main/packages/course","keywords":["course","player","education","react","typescript","reveal.js","ai-teacher"],"repository":{"type":"git","url":"git+https://github.com/your-org/ai-teacher.git","directory":"packages/course"},"description":"AITeacher course player组件与类型，可独立发布到 npm","maintainers":[{"name":"zero7room","email":"zero7room@126.com"}],"readme":"# @ai-teacher/course\n\nAITeacher 课程播放器组件库，提供完整的课程播放、交互式内容渲染和状态管理功能。\n\n## 功能特性\n\n- 🎯 基于 Reveal.js 的课程播放器\n- 🧩 模块化的区块渲染系统\n- 🎨 支持多种内容类型（文本、图片、视频、音频、交互式内容）\n- 📦 完整的 TypeScript 类型支持\n- 🔄 基于 XState 的状态管理\n- 🎬 媒体时间轴事件支持\n\n## 安装\n\n```bash\nnpm install @ai-teacher/course\n# 或\npnpm add @ai-teacher/course\n# 或\nyarn add @ai-teacher/course\n```\n\n## 使用\n\n```tsx\nimport { RevealCoursePlayer } from '@ai-teacher/course';\n\nfunction App() {\n  return (\n    <RevealCoursePlayer\n      course={courseData}\n      onPageChange={(page) => console.log('Page changed:', page)}\n    />\n  );\n}\n```\n\n## 版本管理\n\n本项目遵循 [语义化版本控制 (Semantic Versioning)](https://semver.org/lang/zh-CN/) 规范。\n\n### 版本号格式\n\n版本号格式为：`主版本号.次版本号.修订号` (MAJOR.MINOR.PATCH)\n\n- **主版本号 (MAJOR)**: 不兼容的 API 修改\n- **次版本号 (MINOR)**: 向下兼容的功能性新增\n- **修订号 (PATCH)**: 向下兼容的问题修正\n\n### 版本发布流程\n\n#### 1. 开发阶段\n\n在开发新功能或修复 bug 时，在对应的分支上进行开发：\n\n```bash\n# 创建功能分支\ngit checkout -b feat/your-feature\n# 或修复分支\ngit checkout -b fix/your-bug\n```\n\n#### 2. 构建和测试\n\n在发布前，确保代码已构建且测试通过：\n\n```bash\n# 构建包\npnpm --filter @ai-teacher/course build\n\n# 检查构建产物\nls -la packages/course/dist\n```\n\n#### 3. 版本更新\n\n使用 npm version 命令更新版本号：\n\n```bash\n# 进入 course 包目录\ncd packages/course\n\n# 更新修订号 (0.1.0 -> 0.1.1)\nnpm version patch\n\n# 更新次版本号 (0.1.0 -> 0.2.0)\nnpm version minor\n\n# 更新主版本号 (0.1.0 -> 1.0.0)\nnpm version major\n\n# 预发布版本（可选）\nnpm version prerelease --preid=beta  # 0.1.0 -> 0.1.1-beta.0\nnpm version prerelease --preid=alpha # 0.1.0 -> 0.1.1-alpha.0\n```\n\n**注意**: `npm version` 命令会自动：\n- 更新 `package.json` 中的版本号\n- 创建一个 git commit\n- 创建一个 git tag\n\n#### 4. 发布到 npm\n\n##### 4.1 检查发布配置\n\n确保已登录 npm：\n\n```bash\nnpm whoami\n```\n\n如果未登录，执行：\n\n```bash\nnpm login\n```\n\n确保使用正确的 npm registry（如果是私有 registry）：\n\n```bash\nnpm config get registry\n# 如果需要切换\nnpm config set registry https://registry.npmjs.org/\n```\n\n##### 4.2 发布前检查清单\n\n- [ ] 代码已通过所有测试\n- [ ] 构建成功且无错误\n- [ ] 版本号已正确更新\n- [ ] `package.json` 中的元数据完整（description, keywords, repository 等）\n- [ ] `dist` 目录包含所有必要的构建产物\n- [ ] 已更新 CHANGELOG.md（如果存在）\n\n##### 4.3 执行发布\n\n```bash\n# 方式一：使用 npm publish（推荐）\ncd packages/course\nnpm publish\n\n# 方式二：使用 pnpm publish\npnpm --filter @ai-teacher/course publish\n\n# 发布预发布版本\nnpm publish --tag beta    # 发布 beta 版本\nnpm publish --tag alpha   # 发布 alpha 版本\nnpm publish --tag next    # 发布 next 版本\n```\n\n##### 4.4 发布后操作\n\n1. **推送代码和标签到远程仓库**：\n\n```bash\n# 从项目根目录执行\ngit push origin main\ngit push --tags\n```\n\n2. **验证发布**：\n\n```bash\n# 检查 npm 上的包信息\nnpm view @ai-teacher/course\n\n# 检查最新版本\nnpm view @ai-teacher/course version\n\n# 检查所有版本\nnpm view @ai-teacher/course versions\n```\n\n3. **创建 GitHub Release**（可选）：\n\n在 GitHub 上创建对应的 Release，包含：\n- 版本号\n- 变更日志\n- 重要更新说明\n\n## 发布脚本说明\n\n在 `package.json` 中提供了以下脚本：\n\n- `build`: 构建包\n- `clean`: 清理构建产物\n- `version:patch`: 更新修订版本并发布\n- `version:minor`: 更新次版本并发布\n- `version:major`: 更新主版本并发布\n- `prepublishOnly`: 发布前自动执行的脚本（构建和检查）\n\n## 包发布内容\n\n根据 `package.json` 中的 `files` 字段，只有以下内容会被发布到 npm：\n\n- `dist/` - 构建产物目录\n- `package.json`\n- `README.md`\n- `CHANGELOG.md`（如果存在）\n\n其他文件（如源代码、测试文件、配置文件等）不会被发布。\n\n## 常见问题\n\n### Q: 如何撤销已发布的版本？\n\nA: 如果版本发布后发现问题，可以：\n\n1. **发布补丁版本**（推荐）：\n   ```bash\n   npm version patch\n   npm publish\n   ```\n\n2. **撤销发布**（仅在 72 小时内有效）：\n   ```bash\n   npm unpublish @ai-teacher/course@版本号\n   ```\n   注意：撤销发布需要谨慎，建议优先使用补丁版本修复。\n\n### Q: 如何发布预发布版本？\n\nA: 使用预发布版本进行测试：\n\n```bash\n# 创建 beta 版本\nnpm version prerelease --preid=beta\nnpm publish --tag beta\n\n# 安装测试\nnpm install @ai-teacher/course@beta\n```\n\n### Q: 如何更新已发布的版本？\n\nA: 已发布的版本无法修改，只能发布新版本。确保发布前充分测试。\n\n### Q: 发布时提示 \"You cannot publish over the previously published versions\"\n\nA: 该版本已存在，需要更新版本号后再发布。\n\n## 开发\n\n### 本地开发\n\n```bash\n# 安装依赖\npnpm install\n\n# 构建\npnpm --filter @ai-teacher/course build\n\n# 清理\npnpm --filter @ai-teacher/course clean\n```\n\n### 项目结构\n\n```\npackages/course/\n├── src/              # 源代码\n│   ├── components/   # React 组件\n│   ├── lib/          # 工具函数和库\n│   └── types/        # TypeScript 类型定义\n├── dist/             # 构建产物（发布到 npm）\n├── package.json      # 包配置\n└── tsup.config.ts    # 构建配置\n```\n\n## 许可证\n\n[根据项目实际情况填写]\n\n## 相关链接\n\n- [npm 包页面](https://www.npmjs.com/package/@ai-teacher/course)\n- [GitHub 仓库](https://github.com/your-org/ai-teacher)\n- [问题反馈](https://github.com/your-org/ai-teacher/issues)\n\n","readmeFilename":"README.md"}