您好,登录后才能下订单哦!
# Vue项目打包上传GitHub并制作预览链接的方法
## 前言
在Vue项目开发完成后,我们通常需要将项目部署到线上环境供他人访问。GitHub Pages提供了一种简单免费的静态网站托管方案,非常适合展示Vue打包后的静态资源。本文将详细介绍如何将Vue项目打包后上传至GitHub仓库,并通过GitHub Pages生成可访问的预览链接。
## 一、Vue项目打包
### 1. 配置生产环境
在打包前,请确保项目根目录下的`vue.config.js`文件中已配置正确的`publicPath`(Vue CLI 3+项目):
```javascript
module.exports = {
publicPath: process.env.NODE_ENV === 'production'
? '/repository-name/' // 替换为你的仓库名
: '/'
}
注意:如果项目部署在域名根目录,可设为
'/'
;若部署在子路径(如GitHub Pages),需设为'/repository-name/'
npm run build
打包完成后会在项目根目录生成dist
文件夹,包含:
- index.html
(入口文件)
- static
目录(静态资源)
- 其他构建生成的资源文件
可使用serve
工具测试打包效果:
npm install -g serve
serve -s dist
访问http://localhost:5000
确认页面显示正常
如果项目未初始化Git,需先执行:
git init
git remote add origin https://github.com/yourname/repository-name.git
git add .
git commit -m "initial commit"
git branch -M main
git push -u origin main
gh-pages
分支:npm install gh-pages --save-dev
package.json
中添加脚本:"scripts": {
"deploy": "gh-pages -d dist"
}
npm run deploy
dist
目录初始化新仓库:cd dist
git init
git checkout -b gh-pages
git add .
git commit -m "deploy"
git remote add origin https://github.com/yourname/repository-name.git
git push -f origin gh-pages
gh-pages
分支作为源/(root)
等待1-2分钟后,即可通过https://yourname.github.io/repository-name/
访问
如需使用自定义域名:
yourdomain.com CNAME yourname.github.io
public
目录下创建CNAME
文件(无后缀),内容为域名publicPath
配置是否正确history
模式时配置了fallback可通过GitHub Actions实现CI/CD自动化:
.github/workflows/deploy.yml
文件name: Deploy
on:
push:
branches: [ main ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install and build
run: |
npm install
npm run build
- name: Deploy
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./dist
通过上述步骤,我们实现了: 1. Vue项目的生产环境打包 2. 代码托管到GitHub仓库 3. 利用GitHub Pages生成可访问链接 4. 可选的自定义域名配置
这种方式特别适合个人项目展示、技术文档部署等场景,既免费又无需复杂服务器配置。随着项目迭代,只需重复打包部署流程即可更新线上版本。
最终预览链接格式:
https://<username>.github.io/<repository-name>/
“`
(注:实际字数约1500字,可根据需要删减部分章节调整到1300字左右)
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。