React & GitHub Pages & 自定义域名 Custom Domain

2023-05-16

GitHub pages好处不多说,方便省事省钱。GitHub给每个用户配了一个GitHub pages。用户配置与操作方法可以参考官网文档: https://docs.github.com/en/free-pro-team@latest/github/working-with-github-pages

大概总结起来就是以下几步:

1: 本地建一个库, Repo的名字是GitHubUserName.github.io,(例如我的是 joyecs.github.io).并放到GitHub上,然后这个库的package.json文件里面把homepage写在最前面:example: "homepage": "https://www.joyezhang.com"。然后在package.json的script里面加这两个

"predeploy": "npm run build",

"deploy": "gh-pages -d build"

本地安装gh-pages: npm install gh-pages --save-dev

2:  库建好之后,push到GitHub上,然后运行 npm run deploy 就可以把这个库发布到前面homepage设置的网址中了。

4: GitHub上配置 Custom domain。在settings里面找到Custom domain,填上自定义域名,例如我的(https://www.joyezhang.com/ 在这里只能填 joyezhang.com,无需3w或https。 ).

5: 配置CNAME和A。4个IP地址是GitHub的IP,大家都填一样的,后面的CNAME value改成自己的REPO库名。相当于在DNS这里 写了把 joyezhang.com 指向 joyecs.github.io , 而在GitHub page 设置 custom domain 把 joyecs.github.io指向了 joyezhang.com。

这里记载一下我在配置自己的repo时遇到的问题以及解决方法。

首先是发布到GitHub pages到库的分支问题,这里(setting-Github pages-Source)要记得选gh-pages的branch,我有两个分支,但要把gh-pages作为默认分支才行。因为是自己写的样式和布局啥的,这个theme就不用管了,意义不大。

其次是react的router问题,GitHub pages 上不支持使用 BrowserRouter,即使在React上 npm start运行成功,GitHub上也不行,后来发现要用HashBrowser,具体解释可参考:https://create-react-app.dev/docs/deployment/#github-pages  用BrowserRouter的时候,除了主页,其他页面会404. https://dev.to/zenulabidin/how-not-to-deploy-a-react-site-to-github-pages-42ge 这里解释说BrowserRouter只render主页的 '/';其他URL不render,所以404。用HashRouter的话,浏览器会根据#号后的string判断跳转URL。HashRouter,顾名思义,就是会在domain name后加#,一开始傻傻不明白为什么有hashtag,哈哈

查阅很多说明文档,总结起来是小项目,与后台交互少的用HashBrowser,大项目用BrowserRouter。

用了HashRouter,需要在链接处例如 href里面加上‘#’;例如<Nav.Link href="#experience">Experience</Nav.Link>。而route里面的component不需要加‘#’;写法:<Route exact path='/experience' component={Experience} /> 。

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React & GitHub Pages & 自定义域名 Custom Domain 的相关文章

随机推荐