Github 部署個人網(wǎng)頁 | 一鍵部署

相信不少人最聽說過 Github 部署網(wǎng)站稳诚,但是我翻找了很多文章基本以實操為主,在 Setting 點一下就沒了内贮。

雖然 Github 部署已經(jīng)很簡單了惭笑,但是里面還是有不少細節(jié)的,這篇文章除了手把手教大家部署一個網(wǎng)站瞪浸,還會聊一些關(guān)于部署的細節(jié)儒将。

Tip: 這篇有點長了,下篇會聊一下自定義域名对蒲。

再 Tip: 國內(nèi)訪問 Github 部署的網(wǎng)站是比較慢的钩蚊,再下篇文章會聊一下如何用國內(nèi) CDN 加速 Github 的訪問,不妨點個關(guān)注哦~

最簡單的部署

首先蹈矮,還是先手把手教大家部署一個簡單的頁面砰逻,讓大家先體驗體驗部署的快樂。

第一步泛鸟,在 Github 隨便創(chuàng)建一個項目蝠咆,比如我這里起的名字叫 first-page

創(chuàng)建項目

然后創(chuàng)造 index.html, styles.css, main.js 三個文件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="styles.css">
    <title>First Page</title>
</head>
<body>
    <h2>This is my first page</h2>
    <script src="main.js"></script>
</body>
</html>
alert('xxx')
h2 {
    color: red;
}

在本地用 http-server 跑一下:

http-server -c-1

localhost:8080 就可以看預(yù)覽效果了

預(yù)覽

OK,現(xiàn)在我們把代碼提交到 Github:

git add ./

git commit -m 'feat: 初始化'

git push

進入 Github 項目的 Settings刚操。

Setting

拉到最下面的 Github Pages闸翅。

Github Pages

選擇里面的 master 分支,再點一下 Save 按鈕菊霜,收工坚冀。

master

稍等一下,就可以在 http://username.github.io/first-page/ 上可以訪問了 (注意:這里的 username 就是你的 Github 用戶名鉴逞,比如我的就是 Haixiang6123记某。)

好构捡,以上就是一個最最最簡單的 Github 頁面的部署了液南。下面來聊一聊原理。

原理

剛剛我們通過 http://localhost:8080 就能訪問我們的頁面叭喜,本質(zhì)上是訪問了本地的 index.html贺拣。相應(yīng)地蓖谢,訪問 http://username.github.io/first-page 則是訪問遠程的 index.html捂蕴。

image

這里的部署只是把文件上傳到 Github 而已,具體做法就是 add + commit + push 一把梭子闪幽。

如果我們非要寫個部署腳本啥辨,可以這么寫:

git add ./
git commit -m 'deploy'
git push

復(fù)雜項目部署

上面只說了簡單的 index.html + styles.css + main.js 部署,但是我們平常都是用 Vue 或者 React 開發(fā)的呀盯腌,這要怎么部署呢溉知?

首先,不要被框架“迷惑”了腕够,框架只是為了提高我們的開發(fā)效率级乍,本質(zhì)上當(dāng)我們訪問網(wǎng)頁時還是 index.html + styles.css + main.js

無論是 React 還 Vue帚湘,都會有類似 npm run build 這樣的打包命令玫荣。它會將 jsx/.vue 這些鬼東西通過 Webpack 全部轉(zhuǎn)換為 index.html + styles.css + main.js。

這里我用 React 來做演示大诸,先用 CRA 創(chuàng)建一個項目:

create-react-app hello --template=typescript

然后在項目里跑打包命令:

npm run build

運行之后會在根目錄得到一個 /build 的目錄,里面就裝著我們需要的 html, css, js 文件。

build

通過剛剛的部署經(jīng)驗申屹,我們得知拍皮,只要將這些 html, css 和 js 都推到一個分支上,在 Settings 里選擇這個分支贿堰,最后點一下 "Save" 按鈕就 OJBK 了辙芍。那么問題來了:怎么才能推呢?

我們不妨再仔細品品 git push 這個命令羹与,它的加長版寫法應(yīng)該是這樣的:

git push origin master

origin 是項目的 clone 地址故硅,master 則是我們分支外遇。如果我把 master 換成別的分支,比如就叫 x 分支不就好了契吉?

git push origin x

但是如果這么寫跳仿,很容易出現(xiàn) push 之后出現(xiàn)代碼沖突,導(dǎo)致 push 失敗捐晶。一般情況下菲语,每次部署要把上次的部署覆蓋掉的,所以可以直接 強推

git push origin x -f

還是有問題:目前這個項目是在 first-page 下面惑灵,add-commit-push 素質(zhì)三連除了把 /build push 還會把 /src山上,/node_modules 之類的也 push 到 x 分支了,我們只希望 push /build 目錄怎么辦英支?

答案很簡單佩憾,先去往 /build 目錄,再 git init 一下干花,相當(dāng)于在 first-page 項目倉庫下的 build 目錄再創(chuàng)建一個 git 倉庫妄帘。設(shè)置 origin 為原來項目的 clone 地址即可。

上面這么解釋頭有點暈池凄,我把部署代碼放出來:

# 出錯就停止部署
set -e

# 本地打包構(gòu)建
npm run build

# 進入 build 目錄
cd build

# 創(chuàng)建本地 Git 倉庫
git init 
# 添加和提交
git add -A
git commit -m 'deploy'
# 指定 origin 和分支抡驼,直接強推
git push -f git@github.com:Haixiang6123/first-page.git master

# 回到原來的目錄
cd -

以上就是所有項目的 一鍵部署方法,可以看到無論是什么項目肿仑,只要是有打包功能的致盟,都可以用上面的方法來一鍵部署。

Tip: 上面的 origin 直接用 git@github.com:Haixiang6123/first-page.git 替代了尤慰,也就說項目代碼可以存到隨便一個倉庫馏锡,只需要推到對應(yīng)的 git 地址就可以完成對應(yīng)項目的部署了。目前我的個人網(wǎng)站就是這么部署的:開發(fā)一個倉庫伟端,部署時把產(chǎn)物推到另一個倉庫杯道,以另一個倉庫來部署靜態(tài)網(wǎng)頁。

第三方部署工具

上面的部署腳本我也是抄了 Vue 官方提供的部署腳本荔泳。

Vue 官方是讓開發(fā)者自己抄這個腳本來部署的蕉饼,而 React 則可以用 react-gh-pages 這個第三方工具來部署。

第三方部署工具的好處就是可以自己不寫 bash 腳本玛歌。

另一個好處就是可以幫助讓你避免 404昧港,相信很多人第一次部署 Github 靜態(tài)網(wǎng)頁都會遇到這個問題。99% 的原因都是因為 publicPath 沒有設(shè)置好支子。

而這些第三方部署工具都會在 Getting Started 這一步提醒你要配置好 publicPath创肥,要么直接幫你配置好了。

特殊功能

通過上面的步驟已經(jīng)可以部署一個類似 http://xxx.github.io/first-page 的項目了。但是叹侄,我們在部署個人網(wǎng)站或者博客時不想要這個 first-page 的后綴巩搏,直接 https://xxx.github.io 會更好看。

創(chuàng)建一個名為 xxx.github.io 的項目(xxx 是你的用戶名)趾代,然后再以上面的方式去部署可以得到?jīng)]有后綴的 http://xxx.github.io 贯底。

比如我的 Github 用戶名為 Haixiang6123,那就創(chuàng)建一個名為 Haixiang6123.github.io 的倉庫撒强,然后在這上面部署禽捆。

為什么會這么設(shè)計呢?其實這算是 Github 留給用戶的一個小彩蛋吧飘哨,不過這種大家都希望用到的功能也不能太算為彩蛋了胚想,所以,我更愿意稱其為 特殊功能芽隆。

除了這個浊服,Github 還有很多的特殊功能,比如你直接創(chuàng)建一個以自己 Github 用戶名的倉庫(以我自己的 Haixiang6123 為例):

image

然后在上面添加一個 README.md胚吁,它就可以變成你的 Profile 了:

image

說回部署牙躺,在以前并不能像現(xiàn)在這么自如地想在哪個分支部署就哪個分支部署,只能在 gh-pages 這個特殊分支上部署囤采。而且也可能部署根目錄的 index.html述呐,不像現(xiàn)在還能部署 /docs 目錄下的 index.html

image

所以蕉毯,在以前那段時間,Github 部署靜態(tài)頁面更多是被當(dāng)作一個 特殊功能思犁,導(dǎo)致很多人都會覺得部署一個網(wǎng)頁怎么這么麻煩代虾。

總結(jié)

總結(jié)一下,部署本質(zhì)上就是上傳 html, css, js 文件到另一個硬盤(COS 桶激蹲、CDN 等)棉磨,然后遠程訪問 index.html

使用 Github 部署的關(guān)鍵就是用 add-commit-push 素質(zhì)三連把 html, css, js 都 push 到倉庫上学辱,然后在 Settings 里點一下部署按鈕就可以了乘瓤。

對于需要打包的項目,部署前需要 cd 到打包后的目錄策泣,常見的有 /build/dist 目錄衙傀,然后通過 git init 創(chuàng)建本地倉庫,然后將整個目錄所有東西都強推到項目分支上就好了萨咕。

對了统抬,最近剛建了個公眾號【寫代碼的海怪】,覺得我寫得不錯就隨緣關(guān)注一下嘍~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市聪建,隨后出現(xiàn)的幾起案子钙畔,更是在濱河造成了極大的恐慌,老刑警劉巖金麸,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件擎析,死亡現(xiàn)場離奇詭異,居然都是意外死亡挥下,警方通過查閱死者的電腦和手機叔锐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來见秽,“玉大人愉烙,你說我怎么就攤上這事〗馊。” “怎么了步责?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長禀苦。 經(jīng)常有香客問我蔓肯,道長,這世上最難降的妖魔是什么振乏? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任蔗包,我火速辦了婚禮,結(jié)果婚禮上慧邮,老公的妹妹穿的比我還像新娘调限。我一直安慰自己,他們只是感情好误澳,可當(dāng)我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布耻矮。 她就那樣靜靜地躺著,像睡著了一般忆谓。 火紅的嫁衣襯著肌膚如雪裆装。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天倡缠,我揣著相機與錄音哨免,去河邊找鬼。 笑死昙沦,一個胖子當(dāng)著我的面吹牛琢唾,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播桅滋,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼慧耍,長吁一口氣:“原來是場噩夢啊……” “哼身辨!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起芍碧,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤煌珊,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后泌豆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體定庵,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年踪危,在試婚紗的時候發(fā)現(xiàn)自己被綠了蔬浙。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡贞远,死狀恐怖畴博,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蓝仲,我是刑警寧澤俱病,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站袱结,受9級特大地震影響亮隙,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜垢夹,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一溢吻、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧果元,春花似錦促王、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至欣硼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間恶阴,已是汗流浹背诈胜。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留冯事,地道東北人焦匈。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像昵仅,于是被迫代替她去往敵國和親缓熟。 傳聞我的和親對象是個殘疾皇子累魔,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容