使用GitHub Actions和GitHub pages实现前端项目的自动打包部署
1. 引言
As we all know,前端部署项目是比较简单的,通常情况下只需要将打包的产物(index.html、.js文件、.css文件等)放在Web服务器下就,这种叫静态资源托管,成本是比较低的
那有没有免费的静态资源托管方案?
答曰:有,典型如:GitHub Pages、Gitee Pages、Vercel等
这里笔者使用的是GitHub Pages,官方文档:GitHub Pages 使用入门 - GitHub 文档
现在的前端工程,通常都是基于React、Vue等前端框架,基于Vite、webpack等打包工具构建,必须要构建才能生成前端静态资源文件
有没有能自动将项目打包并部署的方案?
答曰:有,如:GitHub Actions
GitHub Actions的官方文档:GitHub Actions 文档 - GitHub 文档
所以,使用GitHub Actions和GitHub Pages就能实现前端项目的自动部署,每次提交代码都会自动构建并更新网站
这里笔者简要记录使用GitHub Actions和GitHub Pages实现Vue项目的自动构建与发布,详细的使用文档请参考官方文档
2. 项目准备
创建一个Vue3项目
npm create vue@latest
根据提示完成项目初始化
E:\Code>npm create vue@latest
Need to install the following packages:
create-vue@3.10.3
Ok to proceed? (y) y
Vue.js - The Progressive JavaScript Framework
√ 请输入项目名称: ... actions_pages_test
√ 是否使用 TypeScript 语法? ... 否 / 是
√ 是否启用 JSX 支持? ... 否 / 是
√ 是否引入 Vue Router 进行单页面应用开发? ... 否 / 是
√ 是否引入 Pinia 用于状态管理? ... 否 / 是
√ 是否引入 Vitest 用于单元测试? ... 否 / 是
? 是否要引入一款端到端(End to End)测试工具? » - 使用箭头切换按Enter√ 是否要引入一款端到端(End to End)测试工具? » 不需要
√ 是否引入 ESLint 用于代码质量检测? ... 否 / 是
√ 是否引入 Vue DevTools 7 扩展用于调试? (试验阶段) ... 否 / 是
正在初始化项目 E:\Code\actions_pages_test...
项目初始化完成,可执行以下命令:
cd actions_pages_test
npm install
npm run dev
执行npm isntall后运行项目npm run dev

一个Vue3的初始界面,没啥特别的
3. 创建打包部署脚本
首先在项目里创建.github文件夹,然后创建workflows文件夹
在workflows文件夹下创建一个.yml文件,笔者这样叫deploy.yml,任意名字都行

在刚才创建的.yml编写打包部署的代码
name: Build and Deploy
on: [push]
permissions:
contents: write
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout ️
uses: actions/checkout@v4
- name: Install and Build # This example project is built using npm and outputs the result to the 'build' folder. Replace with the commands required to build your project, or remove this step entirely if your site is pre-built.
run: |
npm ci
npm run build
- name: Deploy
uses: JamesIves/github-pages-deploy-action@v4
with:
folder: dist # The folder the action should deploy.
上面的脚本参考自:Deploy to GitHub Pages · Actions · GitHub Marketplace
这些配置也很容易理解,这里有一点要说明,GitHub Actions支持直接复用别人写的脚本,上面的actions/checkout@v4和JamesIves/github-pages-deploy-action@v4就是官方和别人仓库使用的GitHub Actions脚本
通常情况下,找个合适的GitHub Actions脚本就能满足使用
现在去GitHub创建一个空项目

根据空项目的提示,现在在Vue项目里面执行Git初始化和关联远程仓库并推送项目
git init
git add .
git commit -m "first commit"
git branch -M master
git remote add origin <远程Git仓库地址>
git push -u origin master
现在,GitHub仓库里应该就有了代码

Github Actions会自动执行deploy.yml里的文件,进行打包和部署(自动创建gh-pages分支)
此时,离发布到网站还需要开启GitHub Pages,开启步骤如下图所示
在Settings里的Pages下配置从gh-pages分支部署网站

此时提交代码,就会自动推送到网站https://<GitHub账户名>.github.io/actions_pages_test/
此时还需要配置一点东西,就是Vite的打包路径,不然资源会访问不到

把这次修改推送到GitHub仓库,就会自动触发打包部署

点击右侧的github-pages就能看到部署的网站

点击网址即可访问

后续的修改,只要push到GitHub,都会自动打包部署
4. 参考资料
[1] GitHub Actions 文档 - GitHub 文档
[2] GitHub Pages 使用入门 - GitHub 文档
[3] GitHub Actions 入门教程 - 阮一峰的网络日志 (ruanyifeng.com)
使用GitHub Actions和GitHub pages实现前端项目的自动打包部署的更多相关文章
- 如何实现vue-cli搭建的前端项目的自动打包
实现vue-cli + webpack +vue项目的自动打包: 后台java代码: public class OpenDirectory { public static void main(Stri ...
- Github+yeoman+gulp-angular初始化搭建angularjs前端项目框架
在上篇文章里面我们说到了Github账号的申请与配置 那么当你有了Github账号并创建了一个自己的Github项目之后,首要的当然是搭建自己的项目框架啦! 本人对自己的定位是web前端狗,常用开发框 ...
- Jenkins结合shell脚本实现(gitLab/gitHub)前端项目自动打包部署服务器
原始发布部署: 石器时代的我们,先是本地打包好项目,在去服务器上把原来的文件删了,然后回到本地copy到服务器: 这操看起来简单,实际部署的人就知道多烦了,假如来几个项目都要重新发布:那就爽了: 今天 ...
- github 上有趣又实用的前端项目(持续更新,欢迎补充)
github 上有趣又实用的前端项目(持续更新,欢迎补充) 1. reveal.js: 幻灯片展示框架 一个专门用来做 HTML 幻灯片的框架,支持 HTML 和 Markdown 语法. githu ...
- Github配合Jenkins,实现vue等前端项目的自动构建与发布
本篇文章前端项目以vue为例(其实前端工程化项目的操作方法都相同),部署在Linux系统上(centos). 之前做前端项目的部署,一直都是手动运行打包命令,打包完.再使用FTP.Xshell等这类的 ...
- 前端项目通过‘URL 重写’部署在 IIS 中,访问 WebAPI 接口
〇.前言 在前端项目开发时,我们可以通过配置代理 proxy 来访问本地或者是远程接口,但是部署后代理就失效了.如果项目部署在 IIS 上,就没法去对应到指定接口,此时就需要 IIS 中的'URL重写 ...
- 【前端工具】seajs打包部署工具spm的使用总结
相信使用seajs的好处大家都是知道的,接触seajs好像是在半年前,当时还不知道页面阻塞问题,这里不带多余的话了. seajs实现了模块化的开发,一个网站如果分了很多很多模块的话,等开发完成了,发现 ...
- 5 分钟教你快速掌握 GitHub Actions 自动部署博客
自从 GitHub 宣布 GitHub Actions 在平台上对所有开发人员和存储库可用以来,GitHub Actions 越来越受欢迎.很多第三方平台在生态系统中有速度等限制,将进一步推动开发人员 ...
- 使用GitHub Actions实现自动化部署
前言 大家在工作中想必都是通过自动化部署来进行前端项目的部署的,也就是我们在开发完某个需求时,我们只需要将代码推送到某个分支,然后就能自动完成部署,我们一般不用关心项目是如何build以及如何depl ...
- 一文掌握GitHub Actions基本概念与配置
CI/CD包含很多流程,如拉取代码.测试.构建打包.登录远程服务器.部署发布等等. 而Github Actions是GitHub推出的一个CI/CD工具,类似工具还有TravisCI.Jenkins等 ...
随机推荐
- great [ɡreɪt] ɡr 然后 eɪt 单词发音 r和前面的辅音连读
great [ɡreɪt] ɡr 然后 eɪt 单词发音 r和前面的辅音连读
- The History of the English language 英语语音的起源 - 英语的历史 - 古英语 印欧语 希腊语 拉丁语
印欧语 希腊语 拉丁语 日耳曼语 都是什么年代的语言 https://time.graphics/line/776755 印欧语是指印欧语系,它最初被认为在公元前2500年左右分散流传于欧洲.亚洲和印 ...
- 二进制文件分析工具-hexdump使用指南
一 概念: hexdump是Linux下的一个二进制文件查看工具,它可以将二进制文件转换为ASCII.八进制.十进制.十六进制 格式进行 查看. 二 用法简介: 该工具的用法十分简单,具体如下所示: ...
- LinuxDNS分析从入门到放弃(记一次有趣的dns问题排查记录,ping 源码分析,getaddrinfo源码分析)
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 环境说明 ubuntu 18.04 前言 我们这里有一块 ...
- java基础 韩顺平老师的 面向对象(中级) 自己记的部分笔记
272,包基本介绍 包的三大作用 1,区分相同的类 2,当类很多时,可以很好的管理类 3,控制访问范围 包基本用法 package com.hspedu; 说明: 1,package 关键字, ...
- 分享一个项目:go `file_line`,在编译器得到源码行号,减少运行期runtime消耗
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 file_line https://github.com/ ...
- AXI4协议的物理模型
AXI4的物理传输模型 1.AXI4的组成部分 首先说一下文章是学习<基于AXI4的IP核互联的设计与验证>莫锦辉的学习笔记.文中大部分的知识都是来源于这篇论文,这里学习以便理解AXI4协 ...
- [apue] 作为 daemon 启动, Unix Domain Socket 侦听失败?
前段时间写一个传递文件句柄的小 demo,有 server 端.有 client 端,之间通过 Unix Domain Socket 通讯. 在普通模式下,双方可以正常建立连接,当server端作为d ...
- 数组栈(ArrayStack)
栈 栈是一种线性结构,相比与数组,栈对应的操作时数组的子集,只能从一端添加元素,也只能从一端取出元素,是一种 后进先出(Last In First Ou,LIFO) 的数据结构. push pop ...
- 9 CSS背景属性
CSS 背景属性 1. background-color(背景颜色) 页面的背景颜色有四种属性值表示,分别是transparent(透明),RGB十进制颜色表示,十六进制颜色表示和颜色单词表示. 属性 ...