巧用gh-pages分支发布自己的静态项目

简介: 大家都知道可以通过github pages 发布自己的静态博客,然后通过 username.github.io 可以访问。例如我的博客可以通过 nqmysb.github.io 访问,不过我的已经绑定域名 https://liaocan.top ,所以会直接跳转到域名显示。

大家都知道可以通过github pages 发布自己的静态博客,然后通过 username.github.io 可以访问。例如我的博客可以通过 nqmysb.github.io 访问,不过我的已经绑定域名 https://liaocan.top ,所以会直接跳转到域名显示。
但是我们通常有很多其他的静态项目需要展示,所以今天我总结一下如何利用gh-pages分支来发布自己的静态项目,然后可以通过域名外网访问。

准备一个github项目

首先准备一个github项目,创建git项目,然后将本地项目上传的git项目的master主干上,此处步骤略过。
我的项目是一个react前端项目,基于create-react-app创建的脚手架的一个文库网站首页,目前项目没有完成,只是搭建了一个架子,写了一个首页布局。项目传送门
现在我们来把它发布到gh-pages分支,通过外网访问。

项目打包

1.拷贝项目到本地

git  clone --progress -v "git@github.com:nqmysb/shared-library-ui.git" 

2.安装依赖包

npm install  或者   yarn install

3.打包项目

npm run build 或者 yarn run build 

打包之后,项目根目录下会出现一个build的文件夹,这个是打包之后的静态文件,也就是我们需要发布到gh-pages分支上的东西。

发布项目到gh-pages 分支

1.进入build文件夹下

cd build

2.git初始化

git init

3.创建gh-pages分支

git checkout --orphan gh-pages

4.添加文件到暂存区

git add .

5.添加信息

git commit -m "init project"

6.设置远程仓库地址

git remote add origin git@github.com:nqmysb/shared-library-ui.git

7.推送项目到 gh-pages分支

git push origin gh-pages

此时你的github该项目会多一个gh-pages分支,点击切换分支可以看到刚刚上传的项目文件。此时我们就可以通过 http://nqmysb.github.io/shared-library-ui 来访问你发布的静态项目了。同样此处我的nqmysb.github.io 绑定了域名,所以访问时会跳转到 https://liaocan.top/shared-library-ui/

两个问题

1.通过create-reat-app创建的项目打包之后,访问项目index.html页面会空白或者报错,无法访问。这里主要是打包的时候css,js引入的路径问题。

create-reat-app官方给的解答是再package.json种添加homepage属性,如下再private后面添加。

"private": true,
"homepage": "."

我这里需要发布到https://liaocan.top/shared-library-ui/ 上面去 ,所以我们这里是:

  "private": true,
  "homepage" : "https://liaocan.top/shared-library-ui",

2.react项目打包部署之后刷新页面报404错误
这里有两种解决方案
第一种:如果你是通过nginx部署静态项目,可以在nignx配置 try_files 如下:

location / {            
root   /usr/share/nginx/html;            
index  index.html index.htm;            
try_files $uri /index.html;        
} 

第二种将react项目种的路由修改为 HashHistory

import { createBrowserHistory,createHashHistory } from 'history'

// export const history = createBrowserHistory()

export const history = createHashHistory()
目录
相关文章
|
XML 安全 网络协议
扫描工具 -- Sn1per Community Edition
扫描工具 -- Sn1per Community Edition
753 0
扫描工具 -- Sn1per Community Edition
|
SQL 关系型数据库 MySQL
将MySQL 数据迁移到 PostgreSQL
将MySQL 数据迁移到 PostgreSQL 可以采用以下步骤: 安装 PostgreSQL 数据库:首先,需要安装 PostgreSQL 数据库。可以从官方网站(https://www.postgresql.org/)下载最新版本的 PostgreSQL,并根据官方指南进行安装。 创建 PostgreSQL 数据库:在 PostgreSQL 中创建与 MySQL 数据库相对应的数据库。可以使用 pgAdmin 或命令行工具(如 psql)来创建数据库。例如,如果在 MySQL 中有一个名为 "mydb" 的数据库,那么可以在 PostgreSQL 中创建一个具有相同名称的数据库。 导
6738 0
|
Java Maven
Maven - 解决Maven下载依赖包速度慢问题
通常我们会因为下载jar包速度缓慢而苦恼,这十分影响开发效率,以及程序员的心情,在IDE下载jar时,无法对IDE做任何动作,只能大眼对小眼。 下载jar速度慢究其原因就是因为很多资源都是国外的,我们下载一个小文件几乎就跨越了一个太平洋那么远,那么有什么方法可以让下载速度变快呢?   其实方法...
8663 0
|
8月前
|
人工智能 缓存 安全
阿里云Tokens怎么收费?最新AI焕新季优惠活动专享万亿Tokens扶持,免费领取1728元代金券
阿里云Tokens按输入/输出分别计费,价格因模型、产品及区域而异,官方活动精准报价:https://t.aliyun.com/U/FzmsXA 千问-Plus约¥0.0008/千tokens(输入),通义点金高级版¥0.1/千tokens。现推出AI焕新季活动,享万亿Tokens扶持及1728元代金券,开通百炼更可免费领7000万Tokens!
1484 1
|
8月前
|
JSON API 数据格式
使用淘宝API获取商品券后价格详情
本文详解如何调用淘宝开放平台API获取商品券后价格,涵盖账号注册、API选型、签名认证、请求构建与JSON响应解析,并提供含时间戳与MD5签名的Python调用示例,助力电商比价与优惠推送开发。(239字)
|
8月前
|
小程序
小程序构建npm时报错应该如何解决
小程序开发初遇“NPM packages not found”报错?只需三步解决:1. 在project.config.json中添加packNpmManually和packNpmRelationList配置;2. 项目→重新打开此项目;3. 工具→构建npm。轻松搞定依赖构建问题!
693 2
|
SQL 安全 UED
通义灵码在DBA日常SQL优化中的使用分享
通义灵码在DBA日常SQL优化中的使用分享
1192 1
通义灵码在DBA日常SQL优化中的使用分享
|
JSON 小程序 JavaScript
|
前端开发
element-ui组件DatePicker日期选择器移动端兼容
element-ui组件DatePicker日期选择器移动端兼容
element-ui组件DatePicker日期选择器移动端兼容