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

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

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

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]删除
最新教程 更多>
  • JavaScript的伴侣
    JavaScript的伴侣
    [2 了解JavaScript承诺 承诺是JavaScript中的一个强大功能,可以简化处理异步操作的处理。它们提供了一种更清洁,更直观的方式来处理异步代码,避免了诸如“回调地狱”之类的问题。 什么是诺言? 是一个代表异步操作的最终完成(或失败)及其结果值的对象。它使...
    编程 发布于2025-02-06
  • 如何在整个HTML文档中设计特定元素类型的第一个实例?
    如何在整个HTML文档中设计特定元素类型的第一个实例?
    [2单独使用CSS,整个HTML文档可能是一个挑战。 the:第一型伪级仅限于与其父元素中类型的第一个元素匹配。 以下CSS将使用添加的类样式的第一个段落: }
    编程 发布于2025-02-06
  • 如何使用Flexbox将元素与容器的底部对齐?
    如何使用Flexbox将元素与容器的底部对齐?
    在提供的方案中使用FlexBox 在提供的方案中,您有一个带有各种子元素的div容器。您的目的是实现一个布局,而元素垂直堆叠,无论文本的高度如何。 flexbox通过自动保证金提供了解决此问题的解决方案。自动利润率使剩余空间在对齐之前的元素中分布到具有自动边缘的元素。实现所需布局的一种方法是使用以...
    编程 发布于2025-02-06
  • 如何精确测量.NET中的方法执行时间?
    如何精确测量.NET中的方法执行时间?
    .NET方法执行时间的精确计算 引言: 确定方法的执行时间对于性能优化至关重要。有多种方法可以测量此指标,每种方法都有其优点和缺点。 最佳方法:Stopwatch .NET 中的Stopwatch功能专门用于测量执行时间,被认为是最准确和最直接的方法。使用方法如下: var watch = Sys...
    编程 发布于2025-02-06
  • 如何使用char_length()在mySQL中按字符串长度对数据进行排序?
    如何使用char_length()在mySQL中按字符串长度对数据进行排序?
    [2使用内置的char_length()function。 char_length()和length() 此查询将从指定的表中检索所有行,并基于上升顺序对它们进行排序指定列的字符长度。带有更长字符串的行将出现在结果的底部。
    编程 发布于2025-02-06
  • 如何使用Python的记录模块实现自定义处理?
    如何使用Python的记录模块实现自定义处理?
    使用Python的Loggging Module 确保正确处理和登录对于疑虑和维护的稳定性至关重要Python应用程序。尽管手动捕获和记录异常是一种可行的方法,但它可能乏味且容易出错。解决此问题,Python允许您覆盖默认的异常处理机制,并将其重定向为登录模块。这提供了一种方便而系统的方法来捕获和...
    编程 发布于2025-02-06
  • 哪种哈希算法最适合PHP中的安全密码存储?
    哪种哈希算法最适合PHP中的安全密码存储?
    安全密码存储:SHA1 vs MD5 VS SHA256 vs bcrypt bcrypt:首选选择 通过password_hash()函数: //创建哈希 $ hash = password_hash($ password,password_default,['cost'=> ...
    编程 发布于2025-02-06
  • 如何使用不同数量列的联合数据库表?
    如何使用不同数量列的联合数据库表?
    合并列数不同的表 当尝试合并列数不同的数据库表时,可能会遇到挑战。一种直接的方法是在列数较少的表中,为缺失的列追加空值。 例如,考虑两个表,表 A 和表 B,其中表 A 的列数多于表 B。为了合并这些表,同时处理表 B 中缺失的列,请按照以下步骤操作: 确定表 B 中缺失的列,并将它们添加到表的末...
    编程 发布于2025-02-06
  • 如何使用shell_exec()从php执行mySQL *.sql文件?
    如何使用shell_exec()从php执行mySQL *.sql文件?
    在PHP 中执行mysql *.sql文件时,在创建网站数据库时,您可能会遇到需要执行的方案。 SQL文件从PHP到自动化站点生成。虽然zend_framework可能是有益的,但由于SQL语句中的不一致而直接运行。推荐的方法是使用Shell_exec()调用MySQL工具以执行您的 *.sql脚...
    编程 发布于2025-02-06
  • 为什么C#没有用于IEnumerable的for Extension方法?
    为什么C#没有用于IEnumerable的for Extension方法?
    [2 [2 最近关于C#缺乏扩展方法的扩展方法] 界面? 有趣的是,只有 list 包括此功能。 [2 这是遗漏的性能优化吗?还是有更深的根本原因? 几种理论试图解释这一明显的差距。 [2 一个观点表明,C#的内置 [2 { item.dosomething(); } 这与扩展方法...
    编程 发布于2025-02-06
  • 对象拟合:IE和Edge中的封面失败,如何修复?
    对象拟合:IE和Edge中的封面失败,如何修复?
    解决此问题,我们采用了一个巧妙的CSS解决方案来解决问题:高度:100%; 高度:auto; 宽度:100%; //对于水平块 ,使用绝对定位将图像定位在中心,以object-fit:object-fit:cover in IE和edge消除了问题。现在,图像将按比例扩展,保持所需的效果而不会失...
    编程 发布于2025-02-06
  • 如何将LINQ的聚合方法用于有效的字符串串联?
    如何将LINQ的聚合方法用于有效的字符串串联?
    与linq 的传统方法涉及使用stringBuilder并在循环中附加每个字符串。但是,对于更有效的方法,LINQ提供了聚合查询。一个汇总查询是一个函数,该函数获取值集合并返回标量值。使用点通用,您可以在iEnumerable对象上调用聚合查询。与LINQ concateNate strings...
    编程 发布于2025-02-06
  • PHP中整数的最大值是多少?
    PHP中整数的最大值是多少?
    在php中揭示了int值的限制:探索php_int_max 在PHP 未签名的整数和php 确定整数大小和最大值 64位平台和int values 在摘要中,而PHP中的特定int值范围取决于平台,典型的最大值大约为通常遇到20亿。在与整数合作以确保准确的计算和有效的代码执行时,了解这些限制至关重...
    编程 发布于2025-02-06
  • 在没有密码提示的情况下,如何在Ubuntu上安装MySQL?
    在没有密码提示的情况下,如何在Ubuntu上安装MySQL?
    在ubuntu 使用debconf-set-selections sudo debconf-set-selections
    编程 发布于2025-02-06
  • 如何在Python中生成具有小数步骤值的范围?
    如何在Python中生成具有小数步骤值的范围?
    在range()要克服此限制,建议将步骤值指定为在范围内生成的点数。 Numpy库提供了linspace函数,该功能需要多个点和可选的终点值。例如: np.linspace(0,1,10,endpoint = false)#返回[0,0.1,0.2,...,0.9] 如果使用浮点数步骤值,则Num...
    编程 发布于2025-02-06

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

Copyright© 2022 湘ICP备2022001581号-3