成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

使用GitHub Pages和GitHub Actions部署React應用

系統
我認為使用GitHub頁面部署這個站點是非常簡單的,然而,我錯了。經過反復試驗,我設法解決了這個問題。本文的目的是重新創建該場景,并帶領您完成解決我們一路上遇到的每個問題的過程。

原文:https://codeburst.io/deploying-a-react-app-using-github-pages-and-github-actions-7fc14d380796

作者:Clyde D'Souza

介紹

我最近用Create React App starter模板創建了一個網站來演示我開發的一個npm包。我認為使用GitHub頁面部署這個站點是非常簡單的,然而,我錯了。經過反復試驗,我設法解決了這個問題。本文的目的是重新創建該場景,并帶領您完成解決我們一路上遇到的每個問題的過程。

1.起點

讓我們從一個共同的基礎開始。我們先用Create React App工具創建一個React應用,同時將代碼添加到GitHub倉庫。我使用了以下命令來生成這個示例React應用。

  1. npx create-react-app <project directory> --template typescript 

此時,你的項目目錄應該看起來像下面的截圖。我沒有添加或修改任何東西--這些是當我們運行上述npx命令時,開箱即生成的文件和文件夾。我只是通過運行 npm run start 命令來確保它在本地工作,僅此而已。

我已經把這些改動推送到了我的 GitHub 倉庫,如果你也在關注,你也可以這樣做。如果你想比較一下,這是我的版本庫現階段的樣子。

2.部署到GitHub Pages

當我們運行 npm run build 命令時,Create React App會將生產文件放入 build 目錄中。然而,如果你看一下 .gitignore 文件,你會發現構建目錄被添加到這個列表中,因此,你無法將這個文件夾的內容提交到GitHub。那么,我們該如何發布我們的應用呢?

GitHub Actions

讓GitHub Actions來拯救我們吧!我們需要在每次代碼提交時構建我們的應用程序,這就是GitHub Actions的作用。在你的應用程序的 .github/workflows 目錄下創建一個名為 build-deploy.yml 的文件。將以下內容粘貼到這個YAML文件中。這是我的GitHub倉庫在這個階段的樣子。

  1. name: Build & deploy 
  2.  
  3. on
  4.   push: 
  5.     branches: 
  6.       - main 
  7.   pull_request: 
  8.     branches: 
  9.       - main 
  10.  
  11. jobs: 
  12.   build: 
  13.     name: Build 
  14.     runs-on: ubuntu-latest 
  15.      
  16.     steps: 
  17.     - name: Checkout code 
  18.       uses: actions/checkout@v2 
  19.      
  20.     - name: Install Node.js 
  21.       uses: actions/setup-node@v1 
  22.       with
  23.         node-version: 13.x 
  24.      
  25.     - name: Install NPM packages 
  26.       run: npm ci 
  27.      
  28.     - name: Build project 
  29.       run: npm run build 
  30.      
  31.     - name: Run tests 
  32.       run: npm run test 
  33.  
  34.     - name: Upload production-ready build files 
  35.       uses: actions/upload-artifact@v2 
  36.       with
  37.         name: production-files 
  38.         path: ./build 
  39.    
  40.   deploy: 
  41.     name: Deploy 
  42.     needs: build 
  43.     runs-on: ubuntu-latest 
  44.     if: github.ref == 'refs/heads/main' 
  45.      
  46.     steps: 
  47.     - name: Download artifact 
  48.       uses: actions/download-artifact@v2 
  49.       with
  50.         name: production-files 
  51.         path: ./build 
  52.  
  53.     - name: Deploy to gh-pages 
  54.       uses: peaceiris/actions-gh-pages@v3 
  55.       with
  56.         github_token: ${{ secrets.GITHUB_TOKEN }} 
  57.         publish_dir: ./build 

最近我寫了這篇文章,解釋了GitHub Actions的基本原理,這里就不多說了。總結一下,這個YAML文件定義了GitHub Actions中的工作流程。這個工作流會在每次推送變更到主分支或創建拉請求合并變更到主分支時被觸發,它將構建React應用,并將 build 目錄的內容部署到 gh-pages 分支。

關于 ${{ secrets.GITHUB_TOKEN }} 的快速注釋——GitHub自動創建一個 GITHUB_TOKEN 密鑰以在您的工作流程中使用。因此,它具有對存儲庫的寫訪問權,因此,您可以更新 gh-pages 分支。

如果您繼續學習,請將此文件提交到存儲庫。馬上,您就會注意到GitHub Pages現在將基于您在工作流文件中的內容進行構建。如果您轉到GitHub中的Actions選項卡,您將看到您的工作流正在執行,并且在一段時間后有望被標記為成功。請隨意單擊UI并探索GitHub存儲庫的這個區域。

假定狀態顯示為成功,此操作還將創建一個名為 gh-pages 的新分支,并將在其中部署生產就緒代碼。

很簡單,不是嗎?

GitHub Pages

現在我們已經將構建文件放到了不同的分支中,讓我們繼續啟用 GitHub Pages。點擊菜單中的Settings,然后向下滾動到 GitHub Pages 部分。

在這里,我們將配置網站內容的位置。由于我們的構建文件已推送到 gh-pages 分支,因此請從下拉列表中進行選擇。點擊Save按鈕,頁面會刷新,當你向下滾動到這部分時,你會看到一個網址。點擊該網址,即可看到網站。

等等,怎么了?我看不到React應用的輸出,你能看到嗎?

您可能會看到一個空白的屏幕,并且如果打開控制臺,則會看到很多錯誤。

提示:如果你沒有看到空屏,而是看到GitHub的404信息,請等待幾分鐘,換個瀏覽器試試,最后,嘗試清除緩存。由于這將是你第一次訪問網站,它可能還沒有在后臺更新東西。

請注意它試圖獲取JavaScript和CSS文件的URL——它使用的是基礎URL,但沒有使用路徑 create-react-app-ghpages-demo。顯然,由于基礎URL中不存在JavaScript或CSS文件,我們得到了一個404錯誤。

只有當你的項目站點使用的是GitHub Pages,即格式為 https://.github.io/ / 時,才會出現這個錯誤。如果你的版本庫使用 .github.io 的格式命名,那么啟用GitHub Pages后可能不會出現上述錯誤。這是因為你的網站不再部署在根目錄下,而是部署在更深一層的 https://.github.io/ /。

那么,我們如何解決這個問題呢?讓我們來看看。

3.設置首頁值

打開這個應用的源代碼,在 package.json 文件中,添加這個鍵值對,適當替換下面URL中的部分。

  1. "homepage""https://<username>.github.io/<project>/"

在我的實例中,這是我必須添加的內容:

  1. "homepage""https://clydedz.github.io/create-react-app-ghpages-demo/"

做完這個改動后,把它推送到GitHub上。這將觸發一次構建和部署。

給它一兩分鐘,然后再次訪問網站?,F在你應該看到你的React應用已經啟動并運行了。萬歲!

4.添加React Router

接下來,我們就來看看在React應用中添加Router的常見場景。會不會無縫運行?還是會再次遇到錯誤?讓我們一探究竟吧。

我將使用React Router來完成這個任務,我將輸入以下命令來安裝這個npm包。

  1. npm install --save react-router-dom 

我按照基本的例子添加了三個路由。這三條路由分別指向三個獨立的React組件。這是我的GitHub倉庫在添加React Router后的樣子。

如果你運行 npm run start 命令,你將能夠觀察到一個非常奇怪的行為。

  • 它的開頭是http://localhost:3000/create-react-app-ghpages-demo,但頁面只包含導航鏈接,沒有其他內容。
  • 點擊“關于”鏈接將URL更新為http://localhost:3000/about,現在會顯示一些內容。然而,由于URL中完全刪除了 create-react-app-ghpages-demo 的值,我們已經不在正確的網站上了(硬刷新該URL會出現錯誤)。

無論如何將這些更改提交到GitHub上(你可能還需要更新你的單元測試)。在成功部署后,你應該也能在線復制這種行為。這顯然不是很理想。

5.解決路由錯誤

造成這種奇怪行為的原因是現在路由器認為網站是從根目錄服務的。這是不正確的--演示應用程序是由一個子目錄提供服務的--因此出現了不匹配。

要解決此問題,請更新以下代碼行:

  1. <Router> 

  1. <Router basename={process.env.PUBLIC_URL}> 

process.env.PUBLIC_URL 的值將是 / 。basename 屬性允許我們指定路由的實際基礎 URL,在本例中,它將是子目錄。

現在剩下的就是讓我們測試該演示網站,并確認它可以像魅力一樣工作。

就是這樣!謝謝閱讀。

本文轉載自微信公眾號「前端全棧開發者」,可以通過以下二維碼關注。轉載本文請聯系前端全棧開發者公眾號。

責任編輯:武曉燕 來源: 前端全棧開發者
相關推薦

2019-11-26 08:00:00

GitHubGitHub ActiAzure

2024-01-24 18:50:21

WebFTP服務器

2022-11-15 17:07:40

開發自動化前端

2014-09-01 09:49:24

github

2018-03-15 09:10:34

GitHub博客 Python

2024-12-31 09:46:45

2024-02-20 08:08:43

2022-12-21 08:20:01

2018-04-16 13:56:31

GitHubPythonFlask

2021-03-26 08:41:11

Go語言Docker

2020-12-04 10:42:54

GithubSSDNode.js

2023-09-05 08:00:00

開源GreptimeDB

2024-12-02 07:00:00

特性標記軟件開發Action

2021-01-18 18:30:49

服務器開發工具

2020-09-01 20:53:26

DocsifyGitHub Page文檔網站

2021-10-03 14:47:26

Fedora CoreGitHub Acti運行器

2021-01-19 05:26:22

Github ActiJenkinsDevOps

2021-04-20 09:36:49

黑客網絡安全網絡攻擊

2022-05-27 08:55:15

工具自動化軟件

2022-07-13 09:17:42

Azure虛擬機加密貨幣云資源
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品456 | 久久久久久网 | 国产精品久久久久无码av | 国产精品成人一区二区三区夜夜夜 | 欧美区日韩区 | 中文字幕一区在线观看视频 | 欧美日韩免费 | 日韩精品一区二区三区中文在线 | 黄色男女网站 | 九九热精品在线 | 欧美二三区 | 男女视频在线观看免费 | 久www| 黄免费观看 | 国产成人精品综合 | 在线日韩 | 日韩欧美专区 | 久热久热 | 日韩欧美一区在线 | 在线日韩福利 | av入口 | 国产精品一区二区不卡 | 欧美一级一区 | 黄色大片视频 | 国产精品视频播放 | 性色av一区 | 亚洲午夜三级 | 亚洲第一区国产精品 | 日本三级全黄三级三级三级口周 | 欧美二级 | 在线国产视频 | 最新高清无码专区 | 天堂av中文在线 | 国产精品视频一区二区三区四区国 | 亚洲精品国产一区 | 成年人黄色一级片 | 国内精品久久久久 | 97精品国产97久久久久久免费 | 天天艹日日干 | 日本免费一区二区三区四区 | 超碰97人人人人人蜜桃 |