Docker方式安装
环境准备
服务器/本地配置要求:
-
2核CPU
-
4GB内存
-
≥5GB 磁盘空间
在使用Docker部署FastBuildAI之前,请确保您的系统已经安装了以下软件:
-
Docker (版本 20.10.0 或更高)
-
Docker Compose (版本 2.0.0 或更高)
您可以通过以下命令检查它们是否已正确安装:
# 检查 Docker 版本
docker --version
# 检查 Docker Compose 版本
docker compose version
部署步骤
1. 获取代码
# Github
git clone https://github.com/gzyxds/cnaiagent.git
# Gitee
git clone https://gitee.com/artaigc/artaigc.git
2. 配置环境变量
在运行 Docker 命令前,首先需要配置环境变量。请确保项目根目录下存在 .env.production.local 文件。您可以从示例文件复制并修改:
# 进入项目根目录
cd FastBuildAI
# 复制环境变量配置文件
cp .env.production.local.example .env.production.local
然后根据您的需求编辑 .env.production.local 文件。如果本地部署且无特殊需求,则无需修改,如果需要部署到线上环境,则需要配置前端接口域名 VITE_APP_BASE_URL。
主要配置项包括:
-
数据库连接信息
-
API密钥和安全设置
-
网络和端口配置
3. 启动服务
完成环境变量配置后,在项目根目录执行以下命令启动所有服务:
docker compose -p fastbuildai --env-file ./.env.production.local -f ./docker/docker-compose.yml up -d
docker compose -p fastbuildai --env-file ./.env.development.local -f ./docker/docker-compose.yml up -d --build
这个命令会:
使用 -p fastbuildai 参数指定项目名称
通过 --env-file ./.env.production.local 加载环境变量配置
使用 -f ./docker/docker-compose.yml 指定 Docker Compose 配置文件
通过 up -d 在后台启动所有服务
配置说明
Docker Compose 配置
./docker/docker-compose.yml 文件定义了 FastBuildAI 所需的所有服务容器。默认配置已经能满足大多数使用场景,但您也可以根据需要进行自定义。
服务管理
查看运行状态
docker compose -p fastbuildai -f ./docker/docker-compose.yml ps
查看服务日志
# 查看所有服务的日志
docker compose -p fastbuildai -f ./docker/docker-compose.yml logs
# 查看特定服务的日志(例如 api 服务)
docker compose -p fastbuildai -f ./docker/docker-compose.yml logs api
# 实时查看日志
docker compose -p fastbuildai -f ./docker/docker-compose.yml logs -f
停止服务
docker compose -p fastbuildai -f ./docker/docker-compose.yml down
重启服务
docker compose -p fastbuildai -f ./docker/docker-compose.yml restart
数据持久化
FastBuildAI 的数据默认存储在 Docker 卷中,确保数据在容器重启后不会丢失。主要的数据卷包括:
-
数据库数据
-
上传的文件和资源
-
配置文件
常见问题
端口冲突
如果遇到端口冲突问题,可以修改 .env.production.local 文件中的端口配置,然后重新启动服务。
容器无法启动
请检查:
-
Docker 服务是否正常运行
-
环境变量文件是否正确配置
-
查看容器日志获取详细错误信息:
docker compose -p fastbuildai -f ./docker/docker-compose.yml logs
性能优化
对于生产环境,建议根据服务器配置调整容器资源限制,可以在 docker-compose.yml 文件中设置 CPU 和内存限制。
框架开发
为了更好的开发体验,我们提供了一些工具配置、项目说明,以便于您更好的开发
需要掌握的基础知识
本项目是一个全栈项目,包含前端和后端两个部分,需要一定的前后端基础知识。请确保掌握相关技术栈的基础知识,以便能处理一些常见的问题。建议在开发前先学一下以下内容,提前了解和学习这些知识,会对项目理解非常有帮助:
前端技术栈 (Web)
核心框架:
-
Vue 3 - 渐进式 JavaScript 框架
-
Nuxt 3 - Vue.js 的直观全栈框架
-
TypeScript - JavaScript 的超集,提供类型安全
样式和UI:
-
Tailwind CSS - 原子化 CSS 框架
-
@nuxt/ui - Nuxt UI 组件库
-
Iconify - 图标框架
-
Reka UI - Vue 组件库
状态管理和路由:
-
Pinia - Vue 状态管理库
-
Vue Router - Vue.js 官方路由
-
VueUse - Vue Composition API 工具集
其他重要技术:
-
Vue I18n - 国际化
-
ECharts - 数据可视化图表库
-
Markdown Editor - Markdown 编辑器
-
Mermaid - 图表生成工具
后端技术栈 (Server)
核心框架:
-
NestJS - 构建高效、可扩展的 Node.js 服务端应用框架
-
TypeScript - JavaScript 的超集,提供类型安全
-
Express - Node.js Web 应用框架
数据库和缓存:
-
TypeORM - TypeScript 和 JavaScript 的 ORM
-
PostgreSQL - 开源关系型数据库
-
Redis - 内存数据结构存储,用作缓存和消息代理
认证和授权:
其他重要技术:
工具链
包管理和构建:
代码质量:
环境要求
基础环境
-
Node.js: 22.x 或更高版本
-
Pnpm: 9.x 或更高版本
-
Git: 用于版本控制
数据库环境
-
PostgreSQL: 14.x 或更高版本
-
Redis: 6.x 或更高版本
开发工具
推荐使用以下开发工具:
-
IDE: Visual Studio Code(推荐)
-
数据库管理: pgAdmin、DBeaver 或 Navicat
-
API 测试: Postman 或 Insomnia
-
版本控制: Git + GitHub Desktop(可选)
工具配置
如果您使用的 IDE 是 VS Code(推荐)的话,可以安装以下工具来提高开发效率及代码格式化:
推荐插件
-
Tailwind CSS IntelliSense - Tailwind CSS 提示插件
-
CSS Variable Autocomplete - CSS 变量提示插件
-
Iconify IntelliSense - Iconify 图标插件
-
i18n Ally - 国际化插件
-
Code Spell Checker - 单词语法检查
-
DotENV - .env 文件高亮
-
Thunder Client - API 测试工具
-
GitLens - Git 增强工具
-
Eslint - 代码质量检查
目录结构
如何安装依赖并组织你的应用结构。
Monorepo仓库目录结构
本项目采用 Monorepo 架构,统一管理多个子项目和核心包。根目录结构如下:
.
├── apps/ # 应用主目录(包含 server、web、mobile、doc 等子项目)
│ ├── server/ # 服务端主应用
│ ├── web/ # 前端 Web 应用
│ ├── mobile/ # 移动端应用
│ └── doc/ # 文档站点
├── packages/ # 复用包与核心业务包
│ ├── utils/ # 工具库
│ ├── config/ # 配置相关包
│ ├── ui/ # UI 组件库
│ ├── designer/ # 设计器相关包
│ ├── http/ # HTTP 通信相关包
│ └── assets/ # 资源包
├── public/ # 公共静态资源
├── docker/ # Docker 相关配置与文档
├── .vscode/ # VSCode 编辑器配置
├── .turbo/ # Turbo 构建缓存
├── node_modules/ # 依赖包目录
├── .git/ # Git 版本控制目录
├── .env* # 环境变量配置文件(多环境)
├── pnpm-workspace.yaml # pnpm 工作区配置
├── package.json # 根包管理配置
├── turbo.json # Turbo 构建工具配置
├── docker-compose.yml # Docker Compose 配置
├── README.md # 项目说明文档(英文)
├── README.zh-CN.md # 项目说明文档(中文)
├── LICENSE # 许可证
├── tsconfig.json # TypeScript 配置
├── .editorconfig # 编辑器配置
├── .prettierignore # Prettier 忽略文件
├── prettier.config.mjs # Prettier 配置
├── .npmrc # npm 配置
├── .gitignore # Git 忽略文件
└── ... # 其他配置文件
目录说明
apps/:存放各个独立运行的应用(如服务端、前端、移动端、文档等)。
packages/:存放可被多个应用复用的业务包、工具包、UI组件等。
public/:公共静态资源目录。
docker/:Docker 相关配置与文档。
.vscode/、.turbo/、node_modules/、.git/:开发、构建、依赖与版本控制相关目录。
.env*:环境变量配置文件,支持多环境(开发、生产、测试)。
pnpm-workspace.yaml:pnpm 工作区配置文件,管理多包依赖。
package.json、turbo.json、tsconfig.json 等:项目根配置文件。
README.md、README.zh-CN.md:项目说明文档(中英文)。
LICENSE:开源许可证。
子项目目录结构
1. apps/server/ - 服务端应用
基于 NestJS 框架的后端应用,提供 API 服务和业务逻辑处理。
apps/server/
├── src/ # 源代码目录
│ ├── main.ts # 应用入口文件
│ ├── core/ # 核心功能模块(缓存、数据库、权限等)
│ ├── common/ # 通用组件(装饰器、过滤器、拦截器等)
│ ├── modules/ # 业务模块
│ │ ├── app.module.ts # 根模块
│ │ ├── console/ # 后台管理 API 模块
│ │ └── web/ # 前台用户 API 模块
│ ├── plugins/ # 插件系统
│ └── assets/ # 静态资源
├── libs/ # 共享库
├── test/ # 测试文件
├── docs/ # 文档
├── dist/ # 构建输出目录
├── storage/ # 文件存储目录
├── package.json # 依赖配置
├── tsconfig.json # TypeScript 配置
├── nest-cli.json # NestJS CLI 配置
└── .swcrc # SWC 编译配置
2. apps/web/ - 前端 Web 应用
基于 Nuxt.js 框架的前端应用,提供用户界面和交互功能。
apps/web/
├── .nuxt/ # Nuxt 构建缓存
├── .output/ # 构建输出
├── app/ # 页面组件
├── assets/ # 静态资源(CSS、图片等)
├── common/ # 通用模块(组件,hooks,通用数据等)
│ ├── components/ # 组件
│ ├── composables/ # 根模块
│ ├── config/ # 公共配置文件
│ ├── constants/ # 项目常量定义
│ ├── utils/ # 工具函数
├── core/ # 核心功能模块(nuxt vue 核心模块)
│ ├── directives/ # vue 指令
│ ├── i18n/ # 国际化相关
│ ├── layouts/ # nuxt 布局
│ ├── middleware # nuxt 中间件
│ ├── modules # nuxt 模块
│ ├── plugins # nuxt 插件
│ ├── stores # Pinia存储
├── libs/ # 共享库
├── models/ # 数据模型定义
├── plugins/ # 插件系统
├── public/ # 前端公共静态资源
├── server/ # nuxt 服务端应用
├── services/ # API 服务层
├── types/ # TypeScript 类型定义
├── app.vue # 根组件
├── nuxt.config.ts # Nuxt 配置
├── app.config.ts # 应用配置
└── package.json # 依赖配置
3. apps/mobile/ - 移动端应用
基于 uni-app/Vite 框架的移动端应用,支持多平台部署。
apps/mobile/
├── src/ # 源代码目录
│ ├── pages/ # 页面组件
│ ├── components/ # 公共组件
│ ├── utils/ # 工具函数
│ ├── api/ # API 接口
│ ├── store/ # 状态管理
│ ├── static/ # 静态资源
│ └── styles/ # 样式文件
├── index.html # 入口 HTML
├── vite.config.ts # Vite 配置
├── package.json # 依赖配置
└── tsconfig.json # TypeScript 配置
4. apps/doc/ - 文档站点
基于 Next.js + Fumadocs 的文档站点,提供项目文档和API参考。
apps/doc/
├── app/ # Next.js App Router 页面
├── docs/ # Markdown 文档文件
├── components/ # 文档组件
├── styles/ # 样式文件
├── public/ # 公共静态文件
├── lib/ # 工具库
├── hooks/ # React Hooks
├── types/ # TypeScript 类型
├── locales/ # 国际化文件
├── .next/ # Next.js 构建缓存
├── next.config.mjs # Next.js 配置
├── source.config.ts # Fumadocs 配置
├── mdx-components.tsx # MDX 组件配置
└── package.json # 依赖配置
5. packages/ - 复用包与核心业务包
packages/ 目录用于存放可被多个应用(如 server、web、mobile 等)复用的工具库、UI 组件、配置、资源等核心包,便于代码共享和统一维护。
packages/
├── utils/ # 通用工具库
│ ├── lib/ # 构建产物与类型声明
│ ├── scripts/ # 构建/发布脚本
│ ├── src/ # 源码目录
│ │ ├── index.ts # 工具库主入口
│ │ └── parse-package-name.ts # 包名解析工具
│ ├── package.json # 包配置
│ ├── tsconfig.json # TypeScript 配置
│ └── ...
├── config/ # 配置相关包
│ ├── eslint/ # ESLint 相关配置
│ │ ├── base.js # 基础 ESLint 配置
│ │ └── http.js # HTTP 相关 ESLint 配置
│ ├── typescript/ # TypeScript 相关配置
│ │ └── base.json # 基础 TS 配置
│ ├── ui/ # UI 相关配置
│ │ └── table.js # 表格 UI 配置
│ ├── package.json # 包配置
│ └── ...
├── ui/ # 通用 UI 组件库
│ ├── src/ # 组件源码
│ │ ├── components/ # 具体组件(如 pro-modal、pro-uploader 等)
│ │ ├── composables/# 组合式函数
│ │ ├── utils/ # 工具函数
│ │ ├── styles/ # 样式文件(全局
│ ├── package.json # 包配置
│ ├── tsconfig.json # TypeScript 配置
│ └── ...
├── designer/ # 设计器相关包
│ ├── src/ # 设计器源码
│ │ ├── components/ # 设计器专用组件
│ │ ├── composables/# 组合式函数
│ │ ├── utils/ # 工具函数
│ │ ├── stores/ # 状态管理
│ │ ├── types/ # 类型定义
│ ├── package.json # 包配置
│ ├── tsconfig.json # TypeScript 配置
│ └── ...
├── http/ # HTTP 通信相关包
│ ├── src/ # 源码目录
│ │ ├── index.ts # 主入口
│ │ ├── types.ts # 类型定义
│ │ └── constants.ts# 常量定义
│ ├── test/ # 测试用例
│ │ ├── http-test.js
│ │ └── interceptor.test.ts
│ ├── package.json # 包配置
│ ├── tsconfig.json # TypeScript 配置
│ └── ...
├── assets/ # 资源包
│ ├── images/ # 图片资源
│ │ ├── files/ # 文件类型图标
│ │ ├── favicon.ico # 网站图标
│ │ └── logo.png # 项目 Logo
│ ├── shims-image.d.ts# 图片类型声明
│ ├── package.json # 包配置
│ └── tsconfig.json # TypeScript 配置
└── ... # 其他可复用包
目录说明
utils/:存放通用工具函数,便于各端复用。
config/:存放各类配置文件和类型定义,支持多端统一配置。
ui/:自研或三方封装的 UI 组件库,统一前端视觉和交互风格。
designer/:低代码、可视化设计器相关的核心包。
http/:HTTP 请求、拦截器、API 通信相关的封装。
assets/:图片、图标、字体等静态资源包,供各端统一引用。
所有包均建议采用独立的
package.json进行依赖管理,支持按需构建和发布。
插件系统目录结构
项目支持插件化开发,插件分为服务端插件和前端插件两部分,实现功能的模块化扩展。
1. 服务端插件目录结构
服务端插件位于 apps/server/src/plugins/ 目录下,每个插件为独立目录。
apps/server/src/plugins/[plugin-name]/
├── package.json # 插件包配置信息
├── plugin-main.module.ts # 插件主模块入口
├── install/ # 插件安装配置
├── entities/ # 数据库实体定义
├── modules/ # 业务模块
│ ├── console/ # 后台管理模块
│ └── web/ # 前台用户模块
├── services/ # 业务服务层
├── controllers/ # 控制器
├── dto/ # 数据传输对象
├── guards/ # 权限守卫
├── decorators/ # 自定义装饰器
└── utils/ # 工具函数
2. 前端插件目录结构
前端插件位于 apps/web/plugins/ 目录下,每个插件为独立目录。
apps/web/plugins/[plugin-name]/
├── package.json # 插件包配置信息
├── index.ts # 插件入口文件
├── README.md # 插件说明文档
├── app/ # 页面组件
│ ├── console/ # 后台管理页面
│ └── ***/ # 前台用户页面
├── models/ # 数据模型定义
├── services/ # API 服务层
├── components/ # 插件组件
├── composables/ # 组合式函数
├── i18n/ # 国际化文件
├── types/ # TypeScript 类型定义
└── utils/ # 工具函数
3. 插件功能说明
-
服务端插件:提供后端 API 接口、数据库操作、业务逻辑处理等功能
-
前端插件:提供用户界面、交互功能、页面路由、状态管理等功能
-
插件独立性:每个插件拥有独立的包配置、依赖管理和功能模块
-
插件集成:插件通过统一的注册机制集成到主应用中
-
模块化开发:支持插件的独立开发、测试和部署
-
扩展性:通过插件系统实现功能的灵活扩展和定制化
项目配置
带你如何配置项目
环境变量
项目所有的环境变量统一放在项目根目录下的 .env.xxx.local 中便于进行管理。
开发环境配置示例
.env.development.local
# Base
NODE_ENV=development
APP_NAME=FastBuildAI
APP_VERSION=1.0.0
# Server
SERVER_PORT=4090
SERVER_CORS_ENABLED=true
SERVER_CORS_ORIGIN=*
SERVER_SHOW_DETAILED_ERRORS=false
# PM2
PM2_APP_NAME=fastbuildai
# JWT
JWT_SECRET=fastbuildai
JWT_EXPIRES_IN=1d
# Database
DB_TYPE=postgres
DB_HOST=localhost
DB_PORT=5432
DB_USERNAME=postgres
DB_PASSWORD=postgres
DB_DATABASE=fastbuildai
DB_TABLE_PREFIX=fb_
DB_SYNCHRONIZE=true
DB_LOGGING=true
# Redis
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_USERNAME=
REDIS_PASSWORD=
REDIS_DB=0
REDIS_TTL=60*60*24
# Logs
# type LogLevel = "log" | "error" | "warn" | "debug" | "verbose" | "fatal"
LOG_LEVELS=error,warn,debug,fatal
LOG_TO_FILE=true
# Web
VITE_APP_BASE_URL='http://localhost:4090'
VITE_APP_WEB_API_PREFIX=/web
VITE_APP_CONSOLE_API_PREFIX=/console
VITE_APP_SHOP_URL='https://freebuildai-shop.yixiangonline.com'
# Base
NODE_ENV=production
APP_NAME=FastbuildAI
APP_VERSION=1.0.0-beta.6
# Server
SERVER_PORT=4090
SERVER_CORS_ENABLED=true
SERVER_CORS_ORIGIN=*
SERVER_SHOW_DETAILED_ERRORS=true
SERVER_IS_DEMO_ENV=false
# PM2
PM2_APP_NAME=fastbuildai
# JWT
JWT_SECRET=fastbuildai
JWT_EXPIRES_IN=1d
# Database
DB_TYPE=postgres
DB_HOST=localhost
DB_PORT=5432
DB_USERNAME=postgres
DB_PASSWORD=postgres
DB_DATABASE=fastbuildai
DB_TABLE_PREFIX=fb_
DB_SYNCHRONIZE=true
DB_LOGGING=true
# Redis
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_USERNAME=
REDIS_PASSWORD=
REDIS_DB=0
REDIS_TTL=60*60*24
# Cache
CACHE_TTL=60*60*24
CACHE_MAX_ITEMS=1000
# Logs
# type LogLevel = "log" | "error" | "warn" | "debug" | "verbose" | "fatal"
LOG_LEVELS=error,warn,debug,fatal,log
LOG_TO_FILE=true
LOG_DATABASE_SCHEMA=true
# Web
VITE_APP_BASE_URL=
VITE_APP_WEB_API_PREFIX=/api
VITE_APP_CONSOLE_API_PREFIX=/consoleapi
# Docker
NPM_REGISTRY_URL=https://registry.npmmirror.com
QUICK_START_MODE=false
DOCKER_CONTAINER_SUFFIX=
DOCKER_MEMORY_LIMIT=3072M
DOCKER_CPU_LIMIT=1.0
DOCKER_MEMORY_RESERVATION=512M
REDIS_EXTERNAL_PORT=
POSTGRES_EXTERNAL_PORT=
# 示例
# Base
# 运行环境
NODE_ENV=production
# 应用名称(用于日志、PM2等标识)
APP_NAME=FastbuildAI
# 应用版本号(用于信息展示或灰度控制)
APP_VERSION=1.0.0-beta.3
# Server
# 后端服务监听端口
SERVER_PORT=4090
# 是否启用 CORS
SERVER_CORS_ENABLED=true
# CORS 允许的来源,* 表示允许任意来源
SERVER_CORS_ORIGIN=*
# 是否显示详细错误(仅建议在开发环境开启)
SERVER_SHOW_DETAILED_ERRORS=true
# 是否演示环境(开启后可能限制写入/危险操作)
SERVER_IS_DEMO_ENV=false
# PM2
# PM2 进程名称(使用 pm2 启动/管理时的标识)
PM2_APP_NAME=fastbuildai
# JWT
# JWT 签名密钥(请在生产环境务必更换为强随机值)
JWT_SECRET=fastbuildai
# JWT 过期时间(如:60s, 10m, 1h, 1d)
JWT_EXPIRES_IN=1d
# Database
# 数据库类型(例如:postgres、mysql)
DB_TYPE=postgres
# 数据库主机地址
DB_HOST=localhost
# 数据库端口
DB_PORT=5432
# 数据库用户名
DB_USERNAME=postgres
# 数据库密码
DB_PASSWORD=postgres
# 数据库名称
DB_DATABASE=fastbuildai
# 数据表前缀(用于区分不同业务)
DB_TABLE_PREFIX=fb_
# 是否自动同步实体到数据库(生产环境谨慎开启,涉及建表/变更)
DB_SYNCHRONIZE=true
# 是否输出 SQL 日志
DB_LOGGING=true
# Redis
# Redis 主机地址
REDIS_HOST=localhost
# Redis 端口
REDIS_PORT=6379
# Redis 用户名(如未启用 ACL 可留空)
REDIS_USERNAME=
# Redis 密码(如无密码可留空)
REDIS_PASSWORD=
# Redis 数据库索引(0-15)
REDIS_DB=0
# 缓存默认过期时间(秒),支持表达式:60*60*24 表示 1 天
REDIS_TTL=60*60*24
# Logs
# type LogLevel = "log" | "error" | "warn" | "debug" | "verbose" | "fatal"
# 输出的日志级别(逗号分隔,按需选择)
LOG_LEVELS=error,warn,debug,fatal,log
# 是否将日志写入文件(需确保有写入权限)
LOG_TO_FILE=true
# 是否打印数据库 schema 变更信息(用于调试)
LOG_DATABASE_SCHEMA=true
# Web
# 前端接口请求域名,生产环境需填写
VITE_APP_BASE_URL=
# Web 与服务端通讯的 API 前缀
VITE_APP_WEB_API_PREFIX=/api
# 控制台管理端 API 前缀
VITE_APP_CONSOLE_API_PREFIX=/consoleapi
# Docker
# npm镜像源
NPM_REGISTRY_URL=https://registry.npmmirror.com
# 是否使用快速启动模式(可能跳过部分检查/初始化)
QUICK_START_MODE=false
# 容器名称后缀(便于区分不同环境/开发者)
DOCKER_CONTAINER_SUFFIX=
# 容器内存上限(例如:512M, 2G)
DOCKER_MEMORY_LIMIT=2666M
# 容器 CPU 限制(核心数,可小数,如 1.0 表示 1 核)
DOCKER_CPU_LIMIT=1.0
# 容器内存预留(调度期望占用)
DOCKER_MEMORY_RESERVATION=512M
# Redis 宿主机映射端口(用于将容器内 6379 暴露到宿主机)
REDIS_EXTERNAL_PORT=
# Postgres 宿主机映射端口(用于将容器内 5432 暴露到宿主机)
POSTGRES_EXTERNAL_PORT=
插件包配置
插件包的基本配置信息统一在插件包根目录下的 manifest.json 中。这个文件会根据插件创建时填的表单信息自动生成,无需自己手动创建。
{
"name": "example-plugin",
"version": "1.0.0",
"title": "示例插件",
"description": "示例插件,用于展示插件包的配置",
"author": "FastBuildAI团队",
"homepage": "https://www.mddai.cn",
"dependencies": {},
"devDependencies": {}
}
在插件包的前后端代码中,会生成带有自身特性的前缀。比如插件后端代码根目录下的 package.json 文件会给包名添加 @server/ 前缀:
{
"name": "@server/example-plugin",
"version": "1.0.0",
"title": "示例插件",
"description": "示例插件,用于展示插件包的配置",
"enabled": true,
"author": "FastBuildAI团队",
"homepage": "https://www.mddai.cn",
"dependencies": {},
"devDependencies": {}
}
同理,插件前端代码根目录下的 package.json 文件会给包名添加 @web/ 前缀:
{
"name": "@web/example-plugin",
"version": "1.0.0",
"title": "示例插件",
"description": "示例插件,用于展示插件包的配置",
"enabled": true,
"author": "FastBuildAI团队",
"homepage": "https://www.mddai.cn",
"dependencies": {},
"devDependencies": {}
}
Git常用的命令
以下是Git的常用命令,按功能分类列出:
## 仓库初始化与配置
```bash
git init # 初始化一个新的Git仓库
git clone <url> # 克隆一个远程仓库到本地
git config --global user.name "姓名" # 设置全局用户名
git config --global user.email "邮箱" # 设置全局邮箱
git config --list # 列出所有配置信息
git config --global core.editor "编辑器" # 设置默认编辑器
```
## 基本操作
```bash
git status # 查看工作区状态
git add <文件> # 将文件添加到暂存区
git add . # 添加所有修改的文件到暂存区
git add -A # 添加所有文件(包括删除的文件)到暂存区
git commit -m "提交信息" # 提交暂存区的文件到本地仓库
git commit -am "提交信息" # 跳过暂存区直接提交所有已跟踪的文件
git commit --amend # 修改最后一次提交
git rm <文件> # 删除文件并记录到暂存区
git mv <旧文件名> <新文件名> # 重命名文件并记录到暂存区
```
## 查看与比较
```bash
git log # 查看提交历史
git log --oneline # 以简洁形式查看提交历史
git log --graph # 以图形化方式查看分支合并历史
git log --stat # 查看提交统计信息
git log -p # 查看每次提交的详细变更
git show # 显示最近一次提交的详细信息
git diff # 查看工作区与暂存区的差异
git diff --cached # 查看暂存区与本地仓库的差异
git diff HEAD # 查看工作区与本地仓库的差异
git diff <分支1> <分支2> # 比较两个分支的差异
git blame <文件> # 查看文件每一行的修改者和提交信息
```
## 分支管理
```bash
git branch # 列出所有本地分支
git branch -r # 列出所有远程分支
git branch -a # 列出所有本地和远程分支
git branch <分支名> # 创建新分支
git branch -d <分支名> # 删除已合并的分支
git branch -D <分支名> # 强制删除分支(未合并的)
git checkout <分支名> # 切换到指定分支
git checkout -b <分支名> # 创建并切换到新分支
git merge <分支名> # 将指定分支合并到当前分支
git merge --abort # 取消正在进行的合并
git rebase <分支名> # 将当前分支变基到指定分支
git rebase --abort # 取消正在进行的变基
git rebase --continue # 继续变基过程
git stash # 保存当前工作进度
git stash list # 列出所有保存的工作进度
git stash apply # 恢复最近保存的工作进度
git stash drop # 删除最近保存的工作进度
git stash pop # 恢复并删除最近保存的工作进度
```
## 远程仓库操作
```bash
git remote # 列出所有远程仓库
git remote -v # 列出所有远程仓库及其URL
git remote add <名称> <URL> # 添加新的远程仓库
git remote remove <名称> # 删除远程仓库
git remote rename <旧名> <新名> # 重命名远程仓库
git fetch <远程仓库名> # 从远程仓库获取最新版本
git pull <远程仓库名> <分支名> # 从远程仓库拉取并合并到当前分支
git push <远程仓库名> <分支名> # 推送本地分支到远程仓库
git push -u <远程仓库名> <分支名> # 设置上游并推送
git push --force # 强制推送(覆盖远程历史)
git push --all # 推送所有分支到远程仓库
git push --tags # 推送所有标签到远程仓库
```
## 撤销与回退
```bash
git checkout -- <文件> # 撤销工作区中文件的修改
git reset HEAD <文件> # 取消暂存区中的文件
git reset --hard HEAD # 重置工作区和暂存区到最近提交
git reset --soft HEAD~1 # 软重置,保留工作区和暂存区
git reset --mixed HEAD~1 # 混合重置,保留工作区,清空暂存区
git revert <提交ID> # 创建新提交来撤销指定提交
git clean -f # 删除工作区中未跟踪的文件
git clean -fd # 删除工作区中未跟踪的文件和目录
```
## 标签管理
```bash
git tag # 列出所有标签
git tag <标签名> # 创建轻量标签
git tag -a <标签名> -m "标签信息" # 创建带注释的标签
git tag -d <标签名> # 删除本地标签
git push <远程仓库名> <标签名> # 推送指定标签到远程仓库
git push <远程仓库名> --tags # 推送所有标签到远程仓库
git checkout <标签名> # 检出指定标签(处于分离头指针状态)
```
## 高级操作
```bash
git cherry-pick <提交ID> # 选择性地合并提交
git bisect start # 开始二分查找
git bisect bad # 标记当前提交为有问题
git bisect good # 标记当前提交为无问题
git bisect reset # 重置二分查找状态
git filter-branch # 重写分支历史
git submodule add <URL> <路径> # 添加子模块
git submodule update # 更新子模块
git archive --format zip --output <文件名>.zip HEAD # 创建归档文件
git gc # 垃圾回收,优化仓库
git fsck # 检查仓库完整性
git prune # 清理无效的远程分支引用
```
# 设置本地 main 分支跟踪 Gitee 远程仓库的 master 分支
git branch --set-upstream-to=gitee/master main
# 然后可以直接使用以下命令推送
git push
- 推送到 GitHub: git push origin
- 推送到 Gitee: git push gitee
这些命令涵盖了Git的日常使用场景,从基本的提交和分支管理到高级的历史重写和仓库维护。
根据您的具体需求,可以选择使用相应的命令。