|
| 1 | +# Karin 插件市场提交页面 |
| 2 | + |
| 3 | +这是一个用于提交插件到 Karin 插件市场的 React 应用。 |
| 4 | + |
| 5 | +## 功能 |
| 6 | + |
| 7 | +- ✅ GitHub OAuth 登录 |
| 8 | +- ✅ 自动获取用户的 GitHub 仓库 |
| 9 | +- ✅ 自动检测并勾选已提交的插件(基于 package.json 的 name 字段) |
| 10 | +- ✅ 验证 npm 包是否存在(对于 npm 类型插件) |
| 11 | +- ✅ 支持单 JS 文件类型插件(app 类型,无需 npm 验证) |
| 12 | + |
| 13 | +## 开发 |
| 14 | + |
| 15 | +### 前置要求 |
| 16 | + |
| 17 | +- Node.js 18+ |
| 18 | +- npm 或 pnpm |
| 19 | + |
| 20 | +### 安装依赖 |
| 21 | + |
| 22 | +```bash |
| 23 | +npm install |
| 24 | +``` |
| 25 | + |
| 26 | +### 配置 GitHub OAuth |
| 27 | + |
| 28 | +1. 在 GitHub 创建 OAuth App:https://github.com/settings/developers |
| 29 | +2. 设置 Authorization callback URL: |
| 30 | + - 开发环境:`http://localhost:5173/plugins-list/` |
| 31 | + - 生产环境:`https://karinjs.github.io/plugins-list/` |
| 32 | +3. 复制 `.env.example` 到 `.env` |
| 33 | +4. 在 `.env` 中填入你的 Client ID |
| 34 | + |
| 35 | +### 开发模式 |
| 36 | + |
| 37 | +```bash |
| 38 | +npm run dev |
| 39 | +``` |
| 40 | + |
| 41 | +### 构建 |
| 42 | + |
| 43 | +```bash |
| 44 | +npm run build |
| 45 | +``` |
| 46 | + |
| 47 | +### 部署 |
| 48 | + |
| 49 | +构建后的文件在 `dist` 目录中,可以部署到 GitHub Pages 或任何静态网站托管服务。 |
| 50 | + |
| 51 | +#### GitHub Pages 部署 |
| 52 | + |
| 53 | +1. 确保仓库有 `gh-pages` 分支 |
| 54 | +2. 运行构建命令 |
| 55 | +3. 将 `dist` 目录的内容推送到 `gh-pages` 分支 |
| 56 | + |
| 57 | +## 测试说明 |
| 58 | + |
| 59 | +由于 GitHub OAuth 需要后端服务来交换 access token(不能在前端暴露 client secret),当前实现包含以下测试方法: |
| 60 | + |
| 61 | +### 方法 1:使用个人访问令牌(Personal Access Token) |
| 62 | + |
| 63 | +1. 访问 https://github.com/settings/tokens |
| 64 | +2. 点击 "Generate new token (classic)" |
| 65 | +3. 勾选 `repo` 和 `read:user` 权限 |
| 66 | +4. 生成令牌并复制 |
| 67 | +5. 在浏览器控制台运行: |
| 68 | + ```javascript |
| 69 | + localStorage.setItem('github_token', 'YOUR_TOKEN_HERE'); |
| 70 | + ``` |
| 71 | +6. 刷新页面 |
| 72 | + |
| 73 | +### 方法 2:完整 OAuth 流程 |
| 74 | + |
| 75 | +需要配置后端服务来处理 OAuth 回调并交换 token。可以使用: |
| 76 | +- GitHub Actions |
| 77 | +- Cloudflare Workers |
| 78 | +- Vercel Serverless Functions |
| 79 | +- 或任何其他后端服务 |
| 80 | + |
| 81 | +## 使用说明 |
| 82 | + |
| 83 | +1. 点击"使用 GitHub 登录"按钮 |
| 84 | +2. 授权应用访问您的 GitHub 仓库 |
| 85 | +3. 查看包含 `package.json` 的仓库列表 |
| 86 | +4. 已提交的插件会自动勾选并显示"已提交"标签 |
| 87 | +5. 选择要提交的仓库 |
| 88 | +6. 点击"提交"按钮进行验证 |
| 89 | +7. 验证成功后,会显示可提交的仓库列表 |
| 90 | + |
| 91 | +## 注意事项 |
| 92 | + |
| 93 | +- 只有包含 `package.json` 的仓库才会显示 |
| 94 | +- npm 类型插件会验证包是否在 npm 上存在 |
| 95 | +- app 类型插件(单 JS 文件)不需要 npm 验证 |
| 96 | +- 插件名称基于 `package.json` 中的 `name` 字段 |
0 commit comments