➜ Old React website
Chung Cheuk Hang MichaelJava Web Developer
80 個 Spring Boot annotations寫一個 Maven Java shared library

用 Vite 建立 React 網站

Continued from previous post:
React JS 網頁開發筆記(一)

Table of contents

1 Vite 簡介

幾年前,ReactJS 既開發者應該都會用 Create-React-App 呢一個 npm module 作為 React 項目既 template 項目生成器,不過 Create-React-App 已經超過 2 年冇更新,可以被視為已死既項目。
Vite 係由 VueJS 既原作者創立。因為 VueJS 既興起,Vite 近年取而代之,成為左主流既建立 React 項目既 template 項目生成器。
Vite 有以下既組件:
組件用途
create-vite新 SPA 項目既生成器
viteBuild scripts

1.1 Vite 既優點

用過 Vite 就會發現佢有唔少比起 Create-React-App 絕對既好處:
方面Create-React-AppVite
生成出黎既項目既 node_modules 裡面既檔案、目錄數量4000+ 檔案、5000+ 目錄300+ 檔案、50+ 目錄
Module bundlerWebpack較快既 Rollup
ReactJS transpilerBabel較快既 @vitejs/plugin-react 或者 @vitejs/plugin-react-swc
Build scripts非常笨重、已經超過 2 年冇更新既 React Scripts輕量既 Vite
以下係 Create-React-App 生成出黎既 ReactJS 項目既 node_modules
以下係 Create-Vite 生成出黎既 ReactJS 項目既 node_modules
註:
  • Create-React-App 之所以生成出黎既 ReactJS 項目有 npm modules,完全係因為 React Scripts 引入左大量既 transitive dependencies。

2 動手做

2.1 安裝 Create-Vite

npm i -g create-vite

2.2 生成 ReactJS 項目

創建一個新 folder,然後喺裡面執行:
create-vite my-react-app-vite
我地既項目名係 my-react-app-vite
之後需要揀一啲選項:
  1. React
  2. JavaScript + SWC

2.3 執行 ReactJS 項目

喺生成出黎既 ReactJS 項目既 project root folder 度執行:
npm i
等佢下載所有 npm modules,之後就可以執行:
npm run dev
然後喺本地瀏覽器打開 http://localhost:5173
但如果想 LAN 既其他裝置(例如手機、平板)既瀏覽器都可以連接到,就要執行:
npm run dev -- --host
OS 既防火牆 allow 左 node.exe 之後,可以喺 LAN 既其他裝置打開 http://192.168.1.X:5173

2.4 部署到 GitHub Pages

2.4.1 創建 GitHub repository

  1. 登入 GitHub,然後新增一個 public repository。
  2. 喺本地 git clone 呢個新既 Git repo。
  3. .git 檔案搬到我地用 Create-Vite 建立既項目既 project root folder 裡面。

2.4.2 喺 ReactJS 項目加入 gh-pages

喺 ReactJS 項目既 project root folder 執行:
npm i gh-pages
之後喺 package.json 加入 homepage,個 URL 後面既 path 係岩岩創建既 Git repo 名:
{ "homepage": "http://blackr1234.github.io/my-react-app-vite" }
然後喺 package.jsonscripts field 裡面加入 predeploy 以及 deploy
1{ 2 "scripts": { 3 "dev": "vite", 4 "build": "vite build", 5 "preview": "vite preview", 6 7 "predeploy": "npm run build", 8 "deploy": "gh-pages -d dist" 9 } 10}
註:
  • predeploy 呢個 script 名係 deploy 既 pre script,而 pre script 係 npm 提供既功能。
    • Pre script 會喺佢「pre」既對象既 script 執行之前執行。
    • predeploy 會喺 deploy 執行之前執行。
  • 部署流程:
    1. predeploy script 會幫我地執行 npm run build,而 npm run build 對應 build script,會執行 vite build,生成 dist folder。
    2. deploy script 會執行 gh-pages 既邏輯,將 -ddist folder 部署上我地 Git repo 作為 GitHub Pages。

2.4.3 修改 Vite 配置

我地要將 base path 寫落 vite.config.js
1import { defineConfig } from "vite"; 2import react from "@vitejs/plugin-react-swc"; 3 4export default defineConfig({ 5 base: "/my-react-app-vite", // 要加呢個 config 6 plugins: [react()], 7});

2.4.4 部署 ReactJS 項目到 GitHub Pages

喺 ReactJS 項目既 project root folder 執行:
npm run deploy

3 檢視結果

3.1 Source map

Production build 唔應該有 source map,我地可以睇下 dist folder 裡面有冇 source map。
答案係冇既,因為 Vite 默認既 build.sourcemap 配置係 false,所以 Vite 打包 dist folder 既時候默認係唔會生成 source map。

3.2 GitHub Pages 網站

等一陣,GitHub Pages 會 host 我地既網站:

4 參考資料