」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 部署 React 應用程式:GitHub 頁面使用指南

部署 React 應用程式:GitHub 頁面使用指南

發佈於2024-07-30
瀏覽:886

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]刪除
最新教學 更多>
  • 如何從Python中的字符串中刪除表情符號:固定常見錯誤的初學者指南?
    如何從Python中的字符串中刪除表情符號:固定常見錯誤的初學者指南?
    從python 導入編解碼器 導入 text = codecs.decode('這狗\ u0001f602'.encode('utf-8'),'utf-8') 印刷(文字)#帶有表情符號 emoji_pattern = re.compile(“ [”...
    程式設計 發佈於2025-02-06
  • 版本5.6.5之前,使用current_timestamp與時間戳列的current_timestamp與時間戳列有什麼限制?
    版本5.6.5之前,使用current_timestamp與時間戳列的current_timestamp與時間戳列有什麼限制?
    在默認值中使用current_timestamp或mysql版本中的current_timestamp或在5.6.5 這種限制源於遺產實現的關注,這些限制需要為Current_timestamp功能提供特定的實現。消息和相關問題 `Productid` int(10)unsigned not ...
    程式設計 發佈於2025-02-06
  • \“(1)vs.(;;):編譯器優化是否消除了性能差異?\”
    \“(1)vs.(;;):編譯器優化是否消除了性能差異?\”
    使用(1)而不是(;;)會導致無限循環的性能差異? 現代編譯器,(1)和(;;)之間沒有性能差異。 是如何實現這些循環的技術分析在編譯器中: perl: S-> 7 8 unstack v-> 4 -e語法ok 在GCC中,兩者都循環到相同的彙編代碼中,如下所示:。 globl t_時 ...
    程式設計 發佈於2025-02-06
  • gdb為什麼在捕獲異常時會哭泣“丟失rise.c”?
    gdb為什麼在捕獲異常時會哭泣“丟失rise.c”?
    GDB的哀嘆:解決丟失的rise.c conundrum 在捕獲異常時,GDB可能會出現煩人的錯誤缺乏“加薪”。要解決這個問題,讓我們深入研究問題及其解決方案的深處。 基礎原因 有效地解決此問題,請按照以下全面的步驟操作: install debuginfo packages:通過安裝“ ...
    程式設計 發佈於2025-02-06
  • 如何干淨地刪除匿名JavaScript事件處理程序?
    如何干淨地刪除匿名JavaScript事件處理程序?
    在這里工作/},false); 不幸的是,答案是否。除非在Creation中存儲對處理程序的引用。 要解決此問題,請考慮將事件處理程序存儲在中心位置,例如頁面的主要對象,請考慮將事件處理程序存儲在中心位置,否則無法清理匿名事件處理程序。 。這允許在需要時輕鬆迭代和清潔處理程序。
    程式設計 發佈於2025-02-06
  • 如何在GO中有效初始化數組,類似於C ++的Memset?
    如何在GO中有效初始化數組,類似於C ++的Memset?
    在go中有等效的memset嗎? 在C中,MEMSET函數允許具有特定值的數組的有效初始化。在GO中,儘管沒有直接等效的詞,但幾種技術可以實現相似的結果。 最簡單的方法是使用循環來設置每個元素對所需值的數組。 = v } } repoyed copy() int,v int){ ...
    程式設計 發佈於2025-02-06
  • 為什麼使用固定定位時,為什麼具有100%網格板柱的網格超越身體?
    為什麼使用固定定位時,為什麼具有100%網格板柱的網格超越身體?
    網格超過身體,用100%grid-template-columns 問題:考慮以下CSS和HTML: position:fixed ; grid-template-columns:40%60%; grid-gap:5px; 背景: #eee; 當位置未固定時,網格將正確顯示。但是...
    程式設計 發佈於2025-02-06
  • React中的異步使用效應功能是否需要清理功能?
    React中的異步使用效應功能是否需要清理功能?
    async functions for async functions:導航清理困境在將useeffect hook與async函數中使用時,開發人員可能會遇到以下以下的訪問警告:此警告源於在組件未填充時清理async函數使用的資源的需求。沒有清理功能,在刪除組件後可能會繼續進行長期運行的異步任...
    程式設計 發佈於2025-02-06
  • 如何在Java列表中有效計算元素的發生?
    如何在Java列表中有效計算元素的發生?
    計數列表中的元素出現在列表 中,在java編程中,列舉列表中列舉元素出現的任務來自列表。為此,收集框架提供了全面的工具套件。 在這種情況下,Batocurrences變量將保持值3,代表動物列表中的“ BAT”出現的數量。 &&& [此方法是簡單的,可以得出準確的結果,使其成為計算列表中元素出現的...
    程式設計 發佈於2025-02-06
  • 深副本與淺副本與Java中的克隆:有什麼區別,我什麼時候應該使用?
    深副本與淺副本與Java中的克隆:有什麼區別,我什麼時候應該使用?
    複製值與復制對象在討論複製類型之前,對於區分 copy values 和複製對象: 複製一個值:複製參考類型的值涉及分配對象引用,類似於復制integer。 && && && && &&&華複製一個對象:創建一個具有自己身份的新對象,涉及使用“新”顯式或隱式。對象的深拷貝 淺複製:一個新對象的值與...
    程式設計 發佈於2025-02-06
  • 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 = Sy...
    程式設計 發佈於2025-02-06
  • 如何使用char_length()在mySQL中按字符串長度對數據進行排序?
    如何使用char_length()在mySQL中按字符串長度對數據進行排序?
    [2使用內置的char_length()function。 char_length()和length() 此查詢將從指定的表中檢索所有行,並基於上升順序對它們進行排序指定列的字符長度。帶有更長字符串的行將出現在結果的底部。
    程式設計 發佈於2025-02-06

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3