蹭热点:白的不能再白的Github Pages部署教程

2023-11-19

最近最热点的新闻无疑是微软收购 世界上最大的同性交友网站——Github了。作为一个程序单身狗,我也来蹭蹭热点,正好花了半天时间学了一下怎么构建Github Pages,没看错,我也是现学的,然后才发现原来Github还有这么NB好用的功能,哎,发现自己真的越学越觉得真的不好意思给自己定位成程序员啊!O(∩_∩)O哈哈~

有自己服务器的童鞋请绕行,此处适合矮矬穷且想小装一下B的同学观赏。o( ̄︶ ̄)o

Github Pages

你可以戳官网,去看看它的介绍,说实话,讲的已经很详细了,但是我知道还是有很多人不喜欢看英文网站之类的东西,所以为了帮助小小白们,我按照我的理解来告诉你一下Github Pages是啥玩意儿。

Websites for you and your projects. Hosted directly from your GitHub repository. Just edit, push, and your changes are live.

上面是官网原话,简单点来说,就是它为你的项目提供一个访问站点,并且直接指向你的仓库,你仓库更新,站点网站自动更新。
这里给大家贴一个我的Demo,看看效果:

周公子's Garden

优点不言而喻:

  • 免费的!!!免费的!!!免费的!!!
    当你用起来你就会发现,它免费给你提供了一个展示项目的站点,对于我们这些矮矬穷还没有服务器的单身狗来说,简直是福音好不好。
  • 方便!方便!方便! 你有没有过这种经历,github上用关键词找了一个仓库,然后clone下来,npm install,npm run dev。最后发现,WTF,这个根本不是我想要的东西,然后再把仓库删了;或者,你发布一个东西,README.md里详细的写着how to use,然后各种截图。有了Github Pages你就真的可以直接来一个
    Demo: https://yourname.github.io/your-project-name
    复制代码
    就是这么潇洒,你们自己看效果!

三种方式

官网是这么说的:

- The master branch
- The gh-pages branch
- A folder named "docs" located on the master branch

复制代码

有三种方式可以帮助我们将项目部署到github pages上,我通过半天时间的研究,来给大家总结一下怎么使用这三种方式!

把react/vue项目发布到github pages

ok,把这种方式放在第一个是因为,确实三大框架的崛起,很少有人只写HTML5页面了,大部分都是单页应用,所以先来个单页应用的栗子试试水。这里用create-react-app构建一个最简单的react应用来说明:

  • github新建一个仓库,就叫first-github-pages吧 使用create-react-app构建一个最基础的项目,如下图:

  • 新建本地分支gh-pages,安装gh-pages包,并修改package.json文件,增加homepage
// package.json
{
  "name": "demo",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "gh-pages": "^1.2.0", // yarn add gh-pages
    "react": "^16.4.0",
    "react-dom": "^16.4.0",
    "react-scripts": "1.1.4"
  },
  "scripts": {
    "predeploy": "yarn build",  // 新增predeploy
    "deploy": "gh-pages -d build", // 新增deploy
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject"
  },
  "homepage": "https://luffyzh.github.io/first-github-pages"
}
复制代码

通过gh-pages发布需要增加两条命令,第一条preldeploy会运行你项目里的build,把你的项目打包,第二条命令则是把打包后的文件推送到远程gh-pages分支。

注意:最好在本地建一个同名分支gh-pages运行deploy,不要在master分支上运行!!!

注意:一定要有homepage属性,否则gh-pages发布的时候找不到某些文件的位置

  • 使用yarn deploy命令发布到github pages

到这里就发布成功了应该,我们去仓库setting里github pages去看一看:

我们可以看出来,gh-pages的方式更加智能,哈哈。推送上去自动部署到github pages,剩下的我们直接访问对应url就可以了。 luffyzh.github.io/first-githu…

[注意]:因为是静态站点,所以完全是客户端部分,那么在使用路由的时候如果不在意美观,尽可能地使用Hash路由,这样跳转会没有任何问题。因为browserRouter依赖于服务端支持,使用它的话访问会出现404 not Found.

Hack的一些办法

如果你有强迫症,就必须要用browserRouter,也没啥问题,大神们就是大神们,他们为我们提供了一些奇思妙想的解决办法:

  • 在create-react-app的public目录下新增一个404.html。
// 404.html
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>404 Not Found</title>
  <script type="text/javascript"> 
    var segmentCount = 0; 
    var l = window.location; 
    l.replace(l.protocol + '//' + l.hostname + (l.port ? ':' + l.port : '') + l.pathname.split('/').slice(0, 1 + segmentCount).join('/') + '/?p=/' + l.pathname.slice(1).split('/').slice(segmentCount).join('/').replace(/&/g, '~and~') + (l.search ? '&q=' + l.search.slice(1).replace(/&/g, '~and~') : '') + l.hash); 
  </script> 
</head>
<body>
</body>
</html>

复制代码
  • 在index.html页面的head里增加如下代码
  <script type="text/javascript">
    (function(l) { 
      if (l.search) { 
        var q = {}; 
        l.search.slice(1).split('&').forEach(function(v) { 
          var a = v.split('='); 
          q[a[0]] = a.slice(1).join('=').replace(/~and~/g, '&'); }); 
          if (q.p !== undefined) { 
            window.history
              .replaceState(null, null, l.pathname.slice(0, -1) + (q.p || '') + (q.q ? ('?' + q.q) : '') + l.hash ); 
            } 
      } 
    }(window.location));
  </script>
复制代码

这样,就解决了browserRouter的问题。

create-react-app 关于这些内容的文档

此处参考文章点这里查看

发布类似h5静态页到github pages

这个采用上面提到的第三种方式,也就是master分支里面包含一个docs文件夹,我们来一步一步试。

  • 新建一个仓库。
  • 本地编写html文件。

  • push到master分支查看效果

我们需要在仓库的setting里启用github pages

好吧。如上图所示,那个master branch/docs folder这个选项是不可选择的,因为我们没有docs文件夹嘛。

  • 我们新建一个docs文件夹然后把index.html放到里面,然后再push上去。
    push完后我们再去setting里,发现那个选项可以被选择,我们选择它然后点击save,就会出现我们的github pages的url,如下图所示:
    我们点击url,就会发现是我们写的那个巨丑无比的html文件,也就是发布成功了。

给你自己做一个首页

标题是啥意思呢,其实很简单,一般的github pages都是以 https://[username].github.io/project-name的形式发布的,那么也就是每一个页面都是针对某个项目的,但是我就想发布一个个人的github主页,上面有我在github上面的一些项目。怎么办呢?

使用且必须使用第一种方式 —— master branch

 // 官网是这么说的
 The source files for User and Organization Pages sites live on the master branch in a dedicated repository named with the GitHub account name:
 
    To create a User Pages site, name the repository using the naming scheme <username>.github.io .
    
    To create an Organization Pages site, name the repository using the naming scheme <orgname>.github.io .
复制代码

意思就是说,你如果想通过.github.io的形式直接访问你的站点,你必须通过master branch的方式来发布。为什么最后讲这个呢?因为除了必须在master branch以外,其他的跟第一和第二种基本没区别,你如果是一个框架项目,那么就用第一种发布,你如果是H5页面,就用第二种发布,只不过需要做一点小小的修改。 因为我就写了个H5页面,所以就用的第二种方式:

// 第二种修改
就是把docs文件夹下面的内容全部复制到master分支下面,就可以了!so easy.
复制代码

注意:这里官方明确说了,想要以这种形式访问,仓库名称必须是[username].github.io

重申

有服务器的童鞋和大拿们就一笑而过就好了,哈哈,毕竟还是有穷人存在的!有服务器随随便便部署上去就可以了,这个我觉得只是用来展示一些静态内容小demo还是挺方便的!

最后总结

最近觉得自己还挺适合写文章的,臭不要脸的认为自己逻辑挺清晰的!O(∩_∩)O哈哈~,争取努力在业余时间每周写一篇文章吧。上一篇感觉还是对一些人有帮助的,也得到了反馈,再接再厉,谢谢米娜桑!!!

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

蹭热点:白的不能再白的Github Pages部署教程 的相关文章

随机推荐

  • 计算机网络--绪论

    一 计网的体系结构 1 概念和功能 2 组成和分类 3 标准化工作及相关组织 二 性能指标 1 速率 2 带宽 3 吞吐量 4 时延 5 时延带宽积 6 往返时间RTT利用率 7 利用率 三 分层结构 1 分层 四 OSI参考模型 1 OS
  • 随机数产生方法

    5 产生一定范围随机数的通用表示公式 要取得 a b 的随机整数 使用 rand b a a 要取得 a b 的随机整数 使用 rand b a 1 a 要取得 a b 的随机整数 使用 rand b a a 1 通用公式 a rand n
  • 【Vue】Vue基础自用笔记&Day02_①Vue过滤器②按键修饰符③自定义指令

    Vue基础 Day02 1 Vue过滤器 2 按键修饰符 3 自定义Vue指令 1 Vue过滤器 Vue js 允许你自定义过滤器 可被用于一些常见的文本格式化 过滤器可以用在两个地方 双花括号 插值和 v bind 表达式 后者从 2 1
  • 袁红岗的编程感悟

    我自己知道 近几年也一直在用 但就是说不出来 直到最近几天才能够表达 叫作Think in Code 也就是用代码思考 同时也把代码当成自己思想表达的方式 正如哲学家用文字设计 诠释思想 程序员 说话 用的是代码 这就是一个程序员的境 界
  • 使用python实现简单全连接神经网络

    最近在学习神经网络的相关知识 特在此做一个笔记 python语言的功能很强大 可以使用很少的代码实现很多功能 因此大家如果想研究深度学习的话 一定要懂得python语言 这篇笔记记录我的第一次使用python编写神经网络代码的过程 其中代码
  • Centos7 ELK7.6.2集群搭建

    Centos7 ELK7 6 2集群搭建 ELK7 6 2网盘安装包下载 一 单节点准备 配置ip 配置主机名和主机名映射 关闭防火墙 事件同步 更换yum源 阿里云yum源 安装常用软件 系统优化 创建用来启动es的普通用户 jdk安装
  • 微信小程序(日历/日期)选择插件

    微信小程序日历选择器插件点击日历日期可以获取到年月日 wxml
  • stm32学习笔记——通用计时器基本原理

    stm32f10x最多有8个定时器 stm32f103zet6就有8个定时器 分别是4个通用定时器 2个高级定时器 2个基本定时器 定时器种类 位数 计时器模式 产生DMA请求 捕获 比较通道 互补输出 特殊应用场景 高级定时器 TIM1
  • Spring Boot 应用启动时 java.lang.reflect.InaccessibleObjectException 问题的解决

    Spring Boot 的应用启动的时候遇到下面的错误 java lang reflect InaccessibleObjectException Unable to make private native accessible Set c
  • windows下命令行修改系统时间;修改系统时间的软件

    找了很久 都没有找到 还找了关键词 dos下修改系统时间 因为看到linux下修改系统时间是用hwclock 命令写入主板芯片 而我由于某些原因想自动化修改系统时间 所以找windows下修改系统时间的软件 没有找到 有一个 意天禁止修改系
  • 图解Git

    基本用法 上面的四条命令在工作目录 暂存目录 也叫做索引 和仓库之间复制文件 git add files 把当前文件放入暂存区域 git commit 给暂存区域生成快照并提交 git reset files 用来撤销最后一次git add
  • UNITY一些关于旋转的问题

    实现平滑的旋转 旋转的目的是为了朝向目标物体 untiy中的旋转rotation是一个四元数 在代码里面我们可以用Quaternion 来记录一个人物角色的最初的旋转角度 注意 这个要在awake里赋值 目的是取得该值 为了实现平滑的旋转
  • 关于powershell中错误:无法将“XXX”项识别为 cmdlet、函数、脚本文件或可运行程序的名称解决方案

    在利用ffmpeg进行格式转换时报错 无法将 ffmpeg 项识别为 cmdlet 函数 脚本文件或可运行程序的名称 发现是改动了ffmpeg所在根文件夹名字 导致path环境变量找不到ffmpeg程序 改动环境变量就正常了 快速打开环境变
  • protobuf对象 转为Json串写入elastic search遇到的问题总结

    背景 从kafka中消费数据后拿到的是protobuf序列化后的字节数组 转化为Java中的proto对象后 需要将这些protocol对象继续处理成Json串写入elasticsearch 各种问题 Json工具选择 刚开始尝试使用fas
  • Failed to convert property value of type 'java.lang.String' to required type 'int' for property

    junit Spring 测试Service org springframework beans TypeMismatchException Failed to convert property value of type java lan
  • Django ORM中常用字段类型与参数

    ORM中常用字段类型与参数 在ORM中一个模型类对应的是数据库中的一张表 对象对应的是数据库中的记录 属性则对应的是字段 此篇为章主要整理的是常用的字段类型和对应的参数 字段类型 1 自增长字段 自增长 id models AutoFiel
  • 详述Java三种注释方法及实例说明

    1 注释方法汇总 实例说明在第二部分 1 1单行注释 1 符号 2 注释范围 从符号 开始 到本行结束 3 快捷键 Ctrl Ctrl 和 的组合 选中要注释的内容 按 Ctrl 便可 同时单行注释多行内容 若想多个同个取消 则选中 以及单
  • Linux的静态库和动态库

    库从本质上来说是一种可执行代码的二进制格式 可以被载入内存中执行 库分静态库和动态库两种 静态库和动态库的区别 1 静态函数库 这类库的名字一般是libxxx a 利用静态函数库编译成的文件比较大 因为整个 函数库的所有数据都会被整合进目标
  • J-Flash中添加MDK制作的QSPI Flash下载算法方法

    在JLINK的电脑端驱动V6 84a上测试的 1 MDK的QSPI Flash下载算法制作方法和制作好的算法看教程第80章和配套的例子即可http www armbbs cn forum php mod viewthread tid 869
  • 蹭热点:白的不能再白的Github Pages部署教程

    最近最热点的新闻无疑是微软收购 世界上最大的同性交友网站 Github了 作为一个程序单身狗 我也来蹭蹭热点 正好花了半天时间学了一下怎么构建Github Pages 没看错 我也是现学的 然后才发现原来Github还有这么NB好用的功能