# 十、打包发布## 构建打包在发布上线之前,我们需要执行构建打包,将 `.less`、`.vue`、`.js` 等相关资源进行编译打包,转换成浏览器可以直接识别运行的普通 `css`、`js`、`html`。```bash
# yarn run build 或者 yarn build
npm run build
```VueCLI 会把打包结果生成存储到项目的 `dist` 目录中。正确的话应该会得到这样一个打包结果:## 关于代码中的 consoleconsole.log 只是用于开发测试使用,发布上线的话没有意义,所以 VueCLI 在打包构建的就是就给你报错不打包了。正确的做法:```
移除项目中所有的 console
```为了给大家快速演示打包,我先手动把 console 校验关闭。## 本地预览测试打包结果> 注意:不能直接双击打开 index.html 运行。将 dist 放到一个 Web 服务器中运行测试,常见的 Web 服务器:- Ngxin
- Apache
- tomcat
- IIS
- 。。。。
- Node.js前端安装配置上面的服务器软件麻烦,这里推荐使用 Vue 官方推荐的一个命令行 http 服务工具:[serve](https://github.com/zeit/serve)。`dist` 目录需要启动一个 HTTP 服务器来访问 (除非你已经将 `publicPath` 配置为了一个相对的值),所以以 `file://` 协议直接打开 `dist/index.html` 是不会工作的。在本地预览生产环境构建最简单的方式就是使用一个 Node.js 静态文件服务器,例如 [serve](https://github.com/zeit/serve):安装:```bash
# yarn global add serve
# 注意:这是在安装全局包,在任何目录执行都可以
# 安装一次就可以了,以后不需要重复安装,顶多升级重装
npm install -g serve
```然后在你的项目目录下执行:```bash
# dist 是运行 Web 服务根目录
serve -s dist
```如果启动成功,你将看到如下提示:```┌────────────────────────────────────────────────────┐│ ││ Serving! ││ ││ - Local: http://localhost:5000 ││ - On Your Network: http://192.168.156.90:5000 ││ ││ Copied local address to clipboard! ││ │└────────────────────────────────────────────────────┘
```> serve 默认占用 5000 端口并启动一个服务然后在浏览器中访问给出的地址访问测试。你自己先大概的测试一下,确保打包结果可以正常运行,然后交由专业的测试人员进行测试。如果测试出问题怎么办?- 修改 src 源代码
- 重新构建打包> 注意:
>
> 不要去修改 dist 中的文件代码,没有用。
>
> 因为每次 `npm run build` 都会先把原来的 dist 删除,然后生成新的结果。## 部署- 公司有专门的 devops,说白了就是运维- 有些公司没有专门的运维人员,那就后端负责
- 你只需要把打包结果给人家就可以了如果想要自己部署,怎么办?- 买一个服务器- 安装服务器运行环境- 阿里云、腾讯云、....
- 买个域名(非必须)- 第一次买非常便宜,几十块钱,续费非常贵
- 把项目代码推送到你的部署服务端
- 部署```js
购买一个能24小时不关机的电脑(有了)安装配置服务器软件把你的项目打包结构扔到服务器的 Web 服务软件中阿里云(推荐)、腾讯云、百度云、
购买域名(非必须,也可以直接使用ip地址,只不过不好记)
```## GitHub PagesGitHub Pages 是 GitHub 提供的一种免费托管静态网站的服务功能。什么是静态网站?它只能处理纯粹的静态文件,例如 html、css、js、图片等资源,它不提供对 Java、PHP、Node.js、Python 等动态服务。Vue 项目编译之后得到的不就是:纯粹的静态文件吗?很多知名的技术网站都部署在 GitHub Pages 中:- Vue.js 官方文档
- Angular 官方文档
- React 官方文档
- toutiao-publish.lipengzhou.com所以仅适合纯静态资源:技术文档,个人博客...。### 使用 GitHub Pages### 关于默认域名GitHub Pages 提供了免费域名:- `用户名.github.io/仓库名/`- 可以有多个
- `用户名.github.io`- 只能有1个- 比较简洁,后面不用跟具体的仓库名称- 创建好以后它会直接帮你开启 GitHub Pages 功能当然了,也可以自定义域名。### 自定义域名首先,你要有一个自己的域名。- 阿里云万网
- 新网
- godaddy
- ...1、登录你的域名管理后台,添加一个 CNAME 记录```
lipengzhou.combaidu.com
jd.com
taobao.coma.taobao.comb.taobao.comxxxx```2、在需要自定义域名的仓库中添加一个 `CNAME` 文件,里面写你自定义的那个域名。## 扩展:GitHub PagesGitHub 也提供了静态文件服务的功能,所谓的静态文件服务仅仅针对纯粹的 html、css、js 等文件托管。它不能部署后端服务,例如 Java、Node.js、PHP 等都不行。有了它,我们就能免费薅羊毛。我们能使用它部署自己的博客、学习测试的网站等都可以玩儿了 。### 把静态文件推到 github 仓库### 开启 GitHub Pages 服务> 将 source 设置为你的 HTML 文件所在的分支> 提示成功,往下滚动,找到给出的访问地址> 访问图示中给出的地址### 关于域名#### 默认域名GitHub 支持两种域名方式:- 一种是:`你的用户id.github.io`- 只能有一个- 一种是:`你的用户id.github.io/xxx`- 可以有任意个对于第一种,你必须创建一个名字叫 `你的用户id.github.io` 的仓库,那么该仓库启用 GitHub Pages 之后默认域名就是:`你的用户id.github.io`。对于第二种,仓库名字就无所谓了,托管到 GitHub Pages 的域名都是 `你的用户id.github.io/仓库名称`。#### 自定义域名GitHub 同时也支持自定义域名,前提是你得有一个个域名,推荐从以下渠道购买:- [阿里云 - 万网](https://wanwang.aliyun.com/)
- [GoDaddy](https://www.godaddy.com/)
- [新网](http://www.xinnet.com/)
- ...接下来推荐阅读:[三步搞定 Github Pages 自定义域名](https://www.jianshu.com/p/2647e079741f)。## 将我们的项目部署到 GitHub Pages1、准备一个自己的域名- GitHub 默认的免费域名强制开启 https
- 在 https 协议中无法发出 http 请求
- 我们项目中使用的接口都是 http 协议的,所以需要准备一个自己的域名,因为自定义域名可以选择使用 http 协议或者 https 协议
- 或者你让接口开发者为接口服务提供 https 的支持2、在域名管理后台添加 `CNAME` 记录<img src="assets/image-20200504103846616.png" alt="image-20200504103846616" style="zoom:50%;" />3、在项目的 `public` 目录中添加 `CNAME` 文件```
toutiuao.lipengzhou.com
```4、生成 GitHub 访问令牌<img src="assets/image-20200504111407287.png" alt="image-20200504111407287" />> 点击用户设置> 选择 Developer settings> 选择 Personal access tokens -> Generate new token> Node: > token 仅显示1次,之后无法查看,所以建议把 token 保存到你的私密位置。5、创建远程仓库(如果已经创建则不需要了)6、将 GitHub 访问令牌添加到远程仓库的 secrets 中> Name:`ACCESS_TOKEN`
>
> Value: `之前生成的 GitHub 访问令牌`> 添加成功了7、在项目根目录中添加 `.github/workflows/main.yml````yaml
name: build and deploy# 当 master 分支 push 代码的时候触发 workflow
on:push:branches:- masterjobs:build-deploy:runs-on: ubuntu-lateststeps:# 下载仓库代码- uses: actions/checkout@v2# 缓存依赖- name: Get yarn cacheid: yarn-cacherun: echo "::set-output name=dir::$(yarn cache dir)"- uses: actions/cache@v1with:path: ${{ steps.yarn-cache.outputs.dir }}key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}restore-keys: |${{ runner.os }}-yarn-# 安装依赖- run: yarn# 打包构建- run: yarn build# 发布到 GitHub Pages- name: Deployuses: peaceiris/actions-gh-pages@v2env:PERSONAL_TOKEN: ${{ secrets.ACCESS_TOKEN }} # 访问秘钥PUBLISH_BRANCH: gh-pages # 推送分支PUBLISH_DIR: ./dist # 部署目录
```> 有兴趣的话可以了解一下:GitHub Action,不建议大家现在去折腾这个东西。8、把项目代码推送到远程仓库9、查看构建部署状态(它需要执行一个构建部署的流程,没那么快)最后就是如何更新项目网站?```
很简单,修改源代码,把更新提交到远程仓库即可。
说白了你可以忽略网站部署这件事儿了。
```然后你可以通过仓库中的 Action 查看构建部署状态(非必须)。不想看的话就等一会儿就可以了。如果打算将项目部署到 `https://.github.io/` 上, `publicPath` 将默认被设为 `"/"`,你可以忽略这个参数。如果打算将项目部署到 `https://.github.io//` 上 (即仓库地址为 `https://github.com//`),可将 `publicPath` 设为 `"//"`。举个例子,如果仓库名字为“my-project”,那么 `vue.config.js` 的内容应如下所示:```js
module.exports = {publicPath: process.env.NODE_ENV === "production" ? "/my-project/" : "/"
};
```修改完配置文件只有,要重新构建,然后将新的打包结果推到仓库才能生效。推送的时候,为了方便,建议直接加上 `--force` 参数,强制推送。```bash
# --force 强制推送,简写 -f
git push -u origin master -f
```## 搭建自己的个人网站- WordPress- 基于 PHP 开发的一个开源的网站工具- 它不能部署到 GitHub Pages,因为它需要 PHP 允许环境- 如果你想玩儿这个东西,我建议买个服务器,然后搭建 WordPress
- Ghost- 基于 Node.js 构建的一个开源的网站程序类似于 WordPress、Ghost 比较适合普通用户,它们都有管理后台,管理发布的内容。还有一种网站工具:静态网站生成器,这类的工具可以把 Markdown 文件转换为 HTML 文件,而且还有漂亮的外壳。- Hexo
- Vuepress- Vue 官方开发的一个制作静态网站的工具- Vue 的官方文档都是基于它做的- 也可以做博客,因为它有博客插件