”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 部署 React 应用程序:GitHub 页面使用指南

部署 React 应用程序:GitHub 页面使用指南

发布于2024-07-30
浏览:651

Deploying React Apps: A Guide to Using GitHub Pages

许多开发者发现部署React应用程序很困难,尤其是那些不熟悉生态系统的开发者。您可以使用 GitHub Pages 免费轻松托管静态网页,包括 React 应用程序。在这个详细教程的帮助下,将 React 应用程序部署到 GitHub Pages 将变得轻松无忧,该教程将引导您完成该过程的每一步。

  1. GitHub Pages 简介

GitHub Pages 是一项静态站点托管服务,旨在直接从 GitHub 存储库托管您的个人、组织或项目页面。它提供与 GitHub 工作流程的无缝集成,使其成为托管 React 应用程序的理想选择。

主要优点:

免费且易于使用。

支持自定义域。

自动构建和部署您的网站。

有关更多信息,请查看 GitHub Pages 文档。

  1. 设置你的 React 应用程序

在将 React 应用程序部署到 GitHub Pages 之前,请确保您有一个可用的 React 应用程序。如果您还没有,您可以使用 Create React App (CRA) 创建一个新的 React 应用程序。

npx create-react-app my-react-app
cd my-react-app

此命令使用所有必要的配置设置一个新的 React 项目。

  1. 准备部署您的 React 应用程序

要将 React 应用程序部署到 GitHub Pages,您需要对应用程序的配置进行一些修改。

安装 GitHub Pages 包:

npm install gh-pages --save-dev

更新package.json:

将以下字段添加到您的 package.json 文件中:

"homepage": "https://.github.io/",
"scripts": {
  "predeploy": "npm run build",
  "deploy": "gh-pages -d build"
}

替换为您的 GitHub 用户名和存储库名称。

  1. 创建 GitHub 存储库

转到 GitHub 并创建一个新存储库。

命名您的存储库并将其设置为公共。

不要使用 README、.gitignore 或许可证进行初始化,因为这些将在稍后添加。

  1. 将您的 React 应用程序部署到 GitHub Pages

现在您的 React 应用程序已准备就绪并且您拥有 GitHub 存储库,是时候进行部署了。

初始化Git并推送到GitHub:

git init
git remote add origin https://github.com//.git
git add .
git commit -m "Initial commit"
git push -u origin master

部署您的应用程序:

npm run deploy

此命令将构建您的应用程序并将其部署到存储库的 gh-pages 分支。

  1. 常见部署问题和故障排除

将 React 应用程序部署到 GitHub Pages 有时会遇到问题。以下是常见问题及其解决方案:

404错误:确保package.json中的主页字段设置正确。

构建失败:检查构建脚本并确保安装所有依赖项。

CORS 问题:如果您发出跨源请求,请确保您的 API 端点支持 CORS。

有关更多故障排除提示,请参阅 GitHub Pages 故障排除指南。

  1. 使用 GitHub Actions 自动化部署

GitHub Actions 提供强大的 CI/CD 功能,可以自动化您的部署过程。设置方法如下:

创建工作流程文件:

在您的存储库中,创建一个名为 .github/workflows/deploy.yml 的文件。

添加部署脚本:

名称:将 React 应用程序部署到 GitHub Pages

on:
  push:
    branches:
      - master

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Set up Node.js
        uses: actions/setup-node@v2
        with:
          node-version: '14'

      - name: Install dependencies
        run: npm install

      - name: Build the React app
        run: npm run build

      - name: Deploy to GitHub Pages
        uses: peaceiris/actions-gh-pages@v3
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./build

只要您将更改推送到主分支,此工作流程就会自动部署您的 React 应用程序。

  1. 高级部署技术

除了基础知识之外,您还可以使用几种高级技术来增强部署过程:

自定义域:您可以通过将 CNAME 文件添加到存储库来在 GitHub Pages 站点中使用自定义域。

HTTPS 强制执行:通过在存储库设置中启用 HTTPS 选项,确保您的网站始终通过 HTTPS 提供服务。

分支部署:从不同分支进行部署以用于临时和生产环境。

有关详细信息,请参阅 GitHub Pages 自定义域指南。

  1. 部署 React 应用程序的最佳实践

为确保成功部署和高质量的用户体验,请遵循以下最佳实践:

优化您的构建:使用 webpack 和 Babel 等工具来优化您的 JavaScript 包。

使用环境变量:使用环境变量管理特定于环境的设置。

监控性能:使用性能监控工具来跟踪和提高已部署应用程序的性能。

更多最佳实践,请参阅React部署指南。

  1. 结论

将 React 应用程序部署到 GitHub Pages 是一个简单的过程,可以极大地简化静态网站的托管和管理。通过遵循本指南中概述的步骤,您可以确保顺利高效的部署过程。

通过遵循本指南,您将能够将 React 应用程序部署到 GitHub Pages,利用 GitHub 托管功能的强大功能将您的应用程序交付给全世界。

版本声明 本文转载于:https://dev.to/nilebits/deploying-react-apps-a-guide-to-using-github-pages-1f56?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 反射动态实现Go接口用于RPC方法探索
    反射动态实现Go接口用于RPC方法探索
    在GO 使用反射来实现定义RPC式方法的界面。例如,考虑一个接口,例如:键入myService接口{ 登录(用户名,密码字符串)(sessionId int,错误错误) helloworld(sessionid int)(hi String,错误错误) } 替代方案而不是依靠反射...
    编程 发布于2025-06-22
  • 哪种方法更有效地用于点 - 填点检测:射线跟踪或matplotlib \的路径contains_points?
    哪种方法更有效地用于点 - 填点检测:射线跟踪或matplotlib \的路径contains_points?
    在Python Matplotlib's path.contains_points FunctionMatplotlib's path.contains_points function employs a path object to represent the polygon.它...
    编程 发布于2025-06-22
  • 为什么我会收到MySQL错误#1089:错误的前缀密钥?
    为什么我会收到MySQL错误#1089:错误的前缀密钥?
    mySQL错误#1089:错误的前缀键错误descript [#1089-不正确的前缀键在尝试在表中创建一个prefix键时会出现。前缀键旨在索引字符串列的特定前缀长度长度,以便更快地搜索这些前缀。理解prefix keys `这将在整个Movie_ID列上创建标准主键。主密钥对于唯一识别...
    编程 发布于2025-06-22
  • C++中如何将独占指针作为函数或构造函数参数传递?
    C++中如何将独占指针作为函数或构造函数参数传递?
    在构造函数和函数中将唯一的指数管理为参数 unique pointers( unique_ptr [2启示。通过值: base(std :: simelor_ptr n) :next(std :: move(n)){} 此方法将唯一指针的所有权转移到函数/对象。指针的内容被移至功能中,在操作...
    编程 发布于2025-06-22
  • 在C#中如何高效重复字符串字符用于缩进?
    在C#中如何高效重复字符串字符用于缩进?
    在基于项目的深度下固定字符串时,重复一个字符串以进行凹痕,很方便有效地有一种有效的方法来返回字符串重复指定的次数的字符串。使用指定的次数。 constructor 这将返回字符串“ -----”。 字符串凹痕= new String(' - ',depth); console.Wr...
    编程 发布于2025-06-22
  • PHP未来:适应与创新
    PHP未来:适应与创新
    PHP的未来将通过适应新技术趋势和引入创新特性来实现:1)适应云计算、容器化和微服务架构,支持Docker和Kubernetes;2)引入JIT编译器和枚举类型,提升性能和数据处理效率;3)持续优化性能和推广最佳实践。 引言在编程世界中,PHP一直是网页开发的中流砥柱。作为一个从1994年就开始发展...
    编程 发布于2025-06-22
  • 如何将PANDAS DataFrame列转换为DateTime格式并按日期过滤?
    如何将PANDAS DataFrame列转换为DateTime格式并按日期过滤?
    Transform Pandas DataFrame Column to DateTime FormatScenario:Data within a Pandas DataFrame often exists in various formats, including strings.使用时间数据时...
    编程 发布于2025-06-22
  • 为什么PYTZ最初显示出意外的时区偏移?
    为什么PYTZ最初显示出意外的时区偏移?
    与pytz 最初从pytz获得特定的偏移。例如,亚洲/hong_kong最初显示一个七个小时37分钟的偏移: 差异源利用本地化将时区分配给日期,使用了适当的时区名称和偏移量。但是,直接使用DateTime构造器分配时区不允许进行正确的调整。 example pytz.timezone(...
    编程 发布于2025-06-22
  • CSS强类型语言解析
    CSS强类型语言解析
    您可以通过其强度或弱输入的方式对编程语言进行分类的方式之一。在这里,“键入”意味着是否在编译时已知变量。一个例子是一个场景,将整数(1)添加到包含整数(“ 1”)的字符串: result = 1 "1";包含整数的字符串可能是由带有许多运动部件的复杂逻辑套件无意间生成的。它也可以是故意从单个真理...
    编程 发布于2025-06-22
  • Java的Map.Entry和SimpleEntry如何简化键值对管理?
    Java的Map.Entry和SimpleEntry如何简化键值对管理?
    A Comprehensive Collection for Value Pairs: Introducing Java's Map.Entry and SimpleEntryIn Java, when defining a collection where each element com...
    编程 发布于2025-06-22
  • 如何克服PHP的功能重新定义限制?
    如何克服PHP的功能重新定义限制?
    克服PHP的函数重新定义限制在PHP中,多次定义一个相同名称的函数是一个no-no。尝试这样做,如提供的代码段所示,将导致可怕的“不能重新列出”错误。 但是,PHP工具腰带中有一个隐藏的宝石:runkit扩展。它使您能够灵活地重新定义函数。 runkit_function_renction_re...
    编程 发布于2025-06-22
  • 如何从Python中的字符串中删除表情符号:固定常见错误的初学者指南?
    如何从Python中的字符串中删除表情符号:固定常见错误的初学者指南?
    从python import codecs import codecs import codecs 导入 text = codecs.decode('这狗\ u0001f602'.encode('utf-8'),'utf-8') 印刷(文字)#带有...
    编程 发布于2025-06-22
  • 如何使用PHP将斑点(图像)正确插入MySQL?
    如何使用PHP将斑点(图像)正确插入MySQL?
    essue VALUES('$this->image_id','file_get_contents($tmp_image)')";This code builds a string in PHP, but the function call ...
    编程 发布于2025-06-22
  • 图片在Chrome中为何仍有边框?`border: none;`无效解决方案
    图片在Chrome中为何仍有边框?`border: none;`无效解决方案
    在chrome 在使用Chrome and IE9中的图像时遇到的一个频繁的问题是围绕图像的持续薄薄边框,尽管指定了图像,尽管指定了;和“边境:无;”在CSS中。要解决此问题,请考虑以下方法: Chrome具有忽略“ border:none; none;”的已知错误,风格。要解决此问题,请使用以下...
    编程 发布于2025-06-22
  • 如何使用Java.net.urlConnection和Multipart/form-data编码使用其他参数上传文件?
    如何使用Java.net.urlConnection和Multipart/form-data编码使用其他参数上传文件?
    使用http request 上传文件上传到http server,同时也提交其他参数,java.net.net.urlconnection and Multipart/form-data Encoding是普遍的。 Here's a breakdown of the process:Mu...
    编程 发布于2025-06-22

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3