前端新手必备(1):Gemini生成项目部署到 GitHub Pages

在 AI 能直接生成完整前端项目的今天,个人开发者第一次真正拥有了“一个人就是一支团队”的能力。过去,从想法到上线往往卡在环境配置、工程搭建和服务器部署,而现在,Gemini 已经替我们写好了界面与交互逻辑,剩下的关键一步,就是把这些代码变成一个真正能被访问的网站。本篇文章将以一个 Gemini 生成的 WebApp 为例,手把手带你完成从本地修改、GitHub Desktop 版本管理,到 GitHub Pages 自动部署上线的全过程。你将看到,AI 负责创造应用,我们负责让它走向世界。


目录


一、Gemini AI Studio导出的文件结构

项目打包文件下载地址:正态分布ai可视化https://wwbvh.lanzoum.com/iOw6W3hea3yh



/ 正态分布ai可视化 (Root Directory)
├── .env.local # 本地环境变量:存放 Gemini API Key,不上传仓库
├── .gitignore # Git 忽略配置:忽略 node_modules、环境变量等
├── App.tsx # 应用核心:页面结构组织与状态管理中心
├── README.md # 项目文档:由 Gemini 生成的说明文件
├── index.html # 页面模板:React 应用挂载入口 DOM
├── index.tsx # 渲染入口:将 App 组件挂载至页面
├── metadata.json # 项目元数据:记录应用描述及生成信息
├── package.json # 依赖声明:React、Vite 及图表库等
├── tsconfig.json # TypeScript 配置:定义编译目标与类型检查规则
├── types.ts # 类型定义:组件参数与数据结构接口
├── vite.config.ts # Vite 构建配置:开发服务器与打包设置

├── 📁 components/ # UI 组件层(由 App.tsx 统一调度)
│ ├── AIExplainer.tsx # AI 讲解模块:调用 Gemini 生成可视化解读文本
│ ├── Controls.tsx # 参数控制面板:调节均值 μ 与标准差 σ
│ ├── DistributionChart.tsx # 图表组件:绘制正态分布概率密度曲线
│ └── FormulaDisplay.tsx # 公式展示模块:显示正态分布数学表达式

├── 📁 services/ # 服务逻辑层(对外接口与数据处理)
│ └── geminiService.ts # AI 服务适配器:负责 Gemini API 通信与数据解析

这是一个典型的 Vite + React + TypeScript 结构,并且已经接入了 geminiService,明显是一个带 AI 讲解功能的正态分布可视化小应用。



二、项目上传github要求的文件结构



/ normal-distribution-lab (Root Directory)
├── package.json # 项目依赖与脚本配置:包含 build 与 deploy 命令
├── package-lock.json # 依赖版本锁定文件:保证构建环境一致
├── vite.config.ts # Vite 构建配置:设置 base 适配 GitHub Pages
├── tsconfig.json # TypeScript 编译配置文件
├── index.html # 应用 HTML 入口模板(使用相对路径资源)
├── metadata.json # 项目元数据文件:由 AI 生成的应用描述信息
├── README.md # 项目说明文档
├── .nojekyll # 禁用 GitHub Pages 默认 Jekyll 处理
├── .github/workflows/deploy.yml # GitHub Actions 自动部署配置

├── 📁 src/ # 前端源码主目录
│ ├── App.tsx # 主应用组件:组织页面整体结构与逻辑
│ ├── index.tsx # React 启动入口文件
│ ├── types.ts # 全局 TypeScript 类型定义
│ ├── index.css # 全局样式文件(基础样式或扩展)
│ │
│ ├── 📁 components/ # 页面功能组件区
│ │ ├── DistributionChart.tsx # 正态分布曲线可视化图表组件
│ │ ├── Controls.tsx # 参数控制面板(μ 均值、σ 标准差调节)
│ │ ├── FormulaDisplay.tsx # 正态分布公式展示模块
│ │ └── AIExplainer.tsx # Gemini AI 智能讲解模块
│ │
│ └── 📁 services/ # 业务服务层
│ └── geminiService.ts # Gemini API 请求封装与数据处理逻辑

├── 📁 public/ # 静态资源目录(不会参与打包)
│ └── _redirects # SPA 路由重定向规则,避免刷新 404

└── dist/ # 构建输出目录(打包生成,用于部署,不应提交仓库)

📝 核心要点说明
package-lock.json:这个文件记录了每个依赖包确切的版本号和下载地址,确保了在GitHub Actions的服务器上运行 npm ci 时,安装的依赖和你本地开发环境完全一致,从而避免因依赖版本差异导致的构建失败。dist/ 目录:该目录由 npm run build 命令自动生成,包含编译后的HTML、CSS、JS文件。它不应该被提交到Git仓库(通常已在 .gitignore 文件中忽略),因为每次构建都会重新生成。
这个架构是经过验证、可以成功通过GitHub Actions构建并部署到GitHub Pages的最稳定版本。



三、本地工程代码适配与结构整理:GitHub Pages 部署标准化流程

本部分是运用十八般武艺或倾尽全部解数,实现从源文件树到目标结构的完整转化,涵盖更改文件目录、新建文件夹、创建文件、智能修改文件属性及内容编辑等全方位操作,确保数据迁移与目录重构的高效精准。

第一步:新建 src 目录并规范源码结构

在项目根目录创建标准化的源码目录,这是构建工具(如 Vite)的常见约定:

# 创建核心源码目录
mkdir src

# 创建模块化子目录(根据项目需要调整)
mkdir src/components src/utils src/hooks src/assets

# 移动现有的核心源码文件(以您的文件名为准)
move App.tsx src/
move index.tsx src/
move types.ts src/

# 移动模块目录(如果存在)
move components/ src/ 2>/dev/null || echo "components目录可能不存在或已移动"
move services/ src/ 2>/dev/null || echo "services目录可能不存在或已移动"

第二步:添加全局样式文件 src/index.css

在 src 目录下创建样式文件,集中管理全局样式:

/* src/index.css */
/* 基础重置与全局样式 */
* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

html {
  font-family: system-ui, -apple-system, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

body {
  background-color: #f8fafc; /* 例如 tailwind slate-50 */
  color: #0f172a; /* 例如 tailwind slate-900 */
  line-height: 1.5;
}

/* 为React根容器设置最小高度 */
#root {
  min-height: 100vh;
}

/* 您也可以在此导入字体,例如:
@import url('https://fonts.googleapis.com/css2?family=Inter&display=swap');
*/

在 src/index.tsx 中通过 import './index.css'; 语句引入此文件。

第三步:修正组件间引用路径

移动文件后,必须更新所有因路径改变而失效的 import 语句:
检查 src/App.tsx
确保其引入的子组件路径正确。路径通常应为 ./components/组件名 或 ./目录名/文件名。

// 示例:更新前可能是
// import { Chart } from '../components/Chart';
// 更新后应为:
import { Chart } from './components/Chart';

使用编辑器或命令全局检查

# 在项目根目录下运行,查找可能错误的上级目录引用('..')
grep -r "from '\.." src/ --include="*.tsx" --include="*.ts"

# 查找可能错误的绝对路径引用(以'/'开头)
grep -r "from '/" src/ --include="*.tsx" --include="*.ts"

根据查找结果,将错误的路径修正为基于 src 目录的相对路径。

第四步:配置 vite.config.ts 的核心部署选项

这是适配 GitHub Pages 最关键的一步,用于设置正确的公共基础路径:

// vite.config.ts
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
import path from 'path';

export default defineConfig({
  // !!!最重要:设置 base 路径,必须与 GitHub 仓库名匹配 !!!
  // 例如,仓库名为 "my-app",则应为 '/my-app/'
  // 请将 'normal-distribution-lab' 替换为您的实际仓库名
  base: '/normal-distribution-lab/',

  plugins: [react()],

  // 配置路径别名,方便引用(可选但推荐)
  resolve: {
    alias: {
      '@': path.resolve(__dirname, 'src'),
      // 可以添加更多别名,如:
      // '@components': path.resolve(__dirname, 'src/components'),
    },
  },

  // 生产构建配置
  build: {
    outDir: 'dist', // 构建输出目录
    emptyOutDir: true, // 构建前清空目录
    // 可以在此添加代码分割等优化配置
  },

  // 开发服务器配置
  server: {
    port: 3000,
    open: true, // 自动在浏览器打开
  },
});

第五步:清理与优化 index.html 入口文件

移除不兼容的配置,确保 HTML 文件简洁且资源路径正确:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>您的应用名称</title>
    <!-- 引入CSS框架或样式,例如Tailwind CDN -->
    <script src="https://cdn.tailwindcss.com"></script>
    <!-- 引入您的全局样式 -->
    <link rel="stylesheet" href="./src/index.css">
</head>
<body>
    <div id="root"></div>
    <!-- 入口脚本:确保路径指向 src/index.tsx -->
    <script type="module" src="/src/index.tsx"></script>
</body>
</html>

关键改动是移除script type="importmap"部分,GitHub Pages 的静态托管不原生支持此特性。确保入口脚本路径正确。

第六步:创建 .nojekyll 文件

在项目根目录创建此文件,以指示 GitHub Pages 禁用 Jekyll 处理引擎,避免忽略以下划线开头的文件(如 _redirects):

# 在终端中执行
touch .nojekyll
# 或在文件管理器中新建一个名为 ".nojekyll" 的空文本文件

第七步:创建 public/_redirects 文件以支持 SPA 路由

对于使用 React Router 等客户端路由的单页应用,此文件确保所有导航请求都返回 index.html,由前端路由处理:

# 创建 public 目录和文件
mkdir -p public
echo "/*    /index.html   200" > public/_redirects

文件内容仅此一行即可。

第八步:创建 GitHub Actions 自动化部署工作流

在 .github/workflows/deploy.yml 中定义自动化构建和部署流程:

name: Deploy to GitHub Pages
on:
  push:
    branches: [main] # 在推送到 main 分支时触发

permissions:
  contents: read
  pages: write
  id-token: write

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    environment: github-pages
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Setup Node
        uses: actions/setup-node@v4
        with:
          node-version: '20'
          cache: 'npm'

      - name: Install dependencies
        run: npm ci # 使用 clean install,依赖 package-lock.json

      - name: Build
        run: npm run build

      - name: Setup Pages
        uses: actions/configure-pages@v4

      - name: Upload artifact
        uses: actions/upload-pages-artifact@v3
        with:
          path: './dist' # 上传构建好的 dist 目录

      - name: Deploy to GitHub Pages
        uses: actions/deploy-pages@v4

第九步:更新 package.json 的脚本和依赖

在 package.json 中添加部署脚本和构建所需的依赖:

{
  "scripts": {
    "dev": "vite",
    "build": "vite build",
    "preview": "vite preview",
    "deploy": "npm run build && npx gh-pages -d dist"
  },
  "devDependencies": {
    "gh-pages": "^6.0.0"
  }
}

然后运行 npm install 安装新增的 gh-pages 依赖。

第十步:最终验证与构建测试

在本地执行完整测试,确保一切就绪:

# 1. 安装所有依赖
npm install

# 2. 启动开发服务器,检查功能是否正常
npm run dev
# 访问 http://localhost:3000 进行手动测试

# 3. 运行生产构建,检查是否有错误
npm run build

# 4. 预览构建结果
npm run preview
# 访问 http://localhost:4173,模拟线上环境

# 5. 验证最终项目结构
# 确认以下关键文件和目录都存在:
#   .github/workflows/deploy.yml
#   .nojekyll
#   public/_redirects
#   src/ 目录及其内容
#   vite.config.ts (包含正确的 base 配置)
#   package.json (包含 deploy 脚本)

# 6. (可选) 执行一次本地部署脚本测试
# npm run deploy

完成以上十步后,您的项目结构已经标准化,原则是没有文件就新建,有的文件按照上面步骤修改,后续只需:

  • 将整个文件夹通过 GitHub Desktop 提交并推送到您的 GitHub 仓库
  • GitHub Actions 便会自动执行 .github/workflows/deploy.yml 中定义的流程
  • 构建结果将自动部署到 GitHub Pages
#小技巧。生成的文件可以先为txt文本文件,然后用dos命令来修改文件属性
#按 Win+R,输入 cmd 并按回车,打开命令提示符,然后导航到你的项目目录并执行命令。
:: 1. 首先,进入你的项目文件夹
:: 假设项目在 D:\projects\ 下,仓库名为 normal-distribution-lab
D:
cd \projects\normal-distribution-lab
:: 2. 创建 src 目录及其子目录
mkdir src
mkdir src\components
mkdir src\utils
:: 3. 更改文件属性
RENAME old_file.txt new_file.txt
REN document.doc document.docx
REN config.txt backup_config.txt
类别 重要调整内容 目的
目录结构 建立 src 目录 符合前端工程规范
样式系统 新增 index.css 统一入口样式
安全性 使用 .env 存储 API Key 防止泄露
构建路径 修改 vite.config.ts base 适配 Pages 子路径
部署支持 新增 .nojekyll 与 deploy.yml 自动化部署
路由支持 public/_redirects 防止刷新 404

!!!如果看了上面内容调整起来还有困难,将原始文件用记事本打开,复制内容到deepseek中让它帮你修改,完后拷贝回来更新相应文件即可。现在大模型无所不能无所不专!多折腾几次就OK。


后续内容见博客:前端新手必备(2):Gemini生成项目部署到 GitHub Pageshttps://www.cnblogs.com/haohai9309/p/19556591

posted @ 2026-01-31 08:50  郝hai  阅读(8)  评论(0)    收藏  举报