@edgeone/framework-detect
v0.2.0
Published
A framework detection library for web projects
Downloads
3,504
Readme
framework-detect
一个用于检测 Web 项目框架的 TypeScript 库,支持本地检测和远程仓库检测。
安装
tnpm install @tencent/framework-detect使用方法
本地检测
import { describeFramework } from '@tencent/framework-detect';
// 检测项目框架
const frameworkInfo = await describeFramework('./my-project');
console.log(frameworkInfo);远程仓库检测
支持 GitHub、Gitee、GitLab、Bitbucket 四大平台的远程仓库检测。
GitHub
import { describeFrameworkRemote } from '@tencent/framework-detect';
// 公开仓库(无认证,有速率限制)
const result = await describeFrameworkRemote({
Provider: "Github",
Namespace: "vercel",
RepoName: "next.js",
RootDir: "examples/blog",
});
// 私有仓库(需要 Token)
const result = await describeFrameworkRemote({
Provider: "Github",
Namespace: "your-org",
RepoName: "your-repo",
}, {
Token: "ghp_xxxxx", // GitHub Personal Access Token
});Gitee
const result = await describeFrameworkRemote({
Provider: "Gitee",
Namespace: "oschina",
RepoName: "gitee",
}, {
Token: "your_gitee_token",
});GitLab
// 支持 gitlab.com 和自建实例
const result = await describeFrameworkRemote({
Provider: "Gitlab",
Namespace: "gitlab-org",
RepoName: "gitlab",
Branch: "master",
}, {
Token: "glpat-xxxxx",
BaseUrl: "https://gitlab.com", // 自建实例请修改此 URL
});Bitbucket
// Bitbucket Cloud
const result = await describeFrameworkRemote({
Provider: "Bitbucket",
Namespace: "atlassian",
RepoName: "stash-example-plugin",
Branch: "master",
}, {
Token: "your_app_password", // App Password 或 OAuth Token
});
// Bitbucket Data Center(自建)
const result = await describeFrameworkRemote({
Provider: "Bitbucket",
Namespace: "PROJECT_KEY",
RepoName: "repo-slug",
}, {
Token: "your_personal_access_token",
BaseUrl: "https://bitbucket.example.com",
});详细的 Bitbucket 集成指南请查看 BITBUCKET_GUIDE.md
API
describeFramework(projectRoot: string): Promise<FrameworkInfo>
检测指定目录中的 Web 项目框架。
参数:
projectRoot(string): 项目根目录路径
返回值:
Promise<FrameworkInfo>: 框架信息对象
describeFrameworkRemote(body: GitProviderBody, auth?: any): Promise<FrameworkInfo>
检测远程 Git 仓库中的 Web 项目框架。
参数:
body(GitProviderBody): 仓库信息Provider:"Github"|"Gitee"|"Gitlab"|"Bitbucket"Namespace: 用户名/组织名/Workspace ID/Project KeyRepoName: 仓库名称RootDir?: 根目录(可选)Branch?: 分支名(可选)
auth?(any): 认证信息(可选)- GitHub:
{ Token: "ghp_xxxxx" }或 Octokit 实例 - Gitee:
{ Token: "your_token" } - GitLab:
{ Token: "glpat-xxxxx", BaseUrl?: "https://gitlab.com" } - Bitbucket:
{ Token: "your_token", BaseUrl?: "https://api.bitbucket.org" }
- GitHub:
返回值:
Promise<FrameworkInfo>: 框架信息对象
返回对象结构:
interface FrameworkInfo {
Framework: string; // 框架名称
BuildCmd: string; // 构建命令
InstallCmd: string; // 安装命令
OutputDir: string; // 输出目录
IconPath?: string; // 图标路径(可选)
}支持的框架
- Next.js
- Gatsby
- Remix
- React Router
- Astro
- Hexo
- Eleventy
- Docusaurus
- Solid
- Vue
- Angular
- Svelte
- React
- Nuxt
- Qwik
- Hono
- Vite
支持的 Git 平台
| 平台 | 公开仓库 | 私有仓库 | 自建实例 | 认证方式 | |------|---------|---------|---------|----------| | GitHub | ✅ | ✅ | ✅ | Personal Access Token | | Gitee | ✅ | ✅ | ❌ | Personal Access Token | | GitLab | ✅ | ✅ | ✅ | Personal Access Token | | Bitbucket | ✅ | ✅ | ✅ | OAuth 2.0 / App Password / PAT |
开发
# 安装依赖
npm install
# 构建
npm run build
# 运行测试
npm run test
# 测试远程检测
bun testRemote.ts