# Ship-VuePress

# 一、搭建

# 1、环境准备

需要有node.js的开发环境,具体搭建可参考【Ship-Node】

# 2、开始搭建

个人喜好使用yarn操作,此文档使用yarn并以ship-blog为例:
>>新建项目文件夹:ship-blog
>>全局安装 VuePress >>> yarn global add vuepress >>> 如果使用npm则为:npm install -g vuepress
>>cmd进入项目文件:cd D:\ship-hub\ship-blog
>>初始化项目:yarn init -y >>> 【npm init -y】
>>创建 docs 文件夹,在 docs 中创建 .vuepress 文件夹,在.vuepress中创建 public 文件夹和 config.js 文件,最终项目结构如下:
ship-blog
├─── docs
│   ├── README.md
│   └── .vuepress
│       ├── public
│       └── config.js
└── package.json
>>在 config.js 文件中配置网站标题、描述、主题等信息:
module.exports = {
  title: 'ship-blog',
  description: 'ship-blog',
  head: [ // 注入到当前页面的 HTML <head> 中的标签
    ['link', { rel: 'icon', href: '/logo.jpg' }], // 增加一个自定义的 favicon(网页标签的图标)
  ],
  base: '/', // 这是部署到github相关的配置
  markdown: {
    lineNumbers: false // 代码块显示行号
  },
  themeConfig: {
    nav:[ // 导航栏配置
      {text: '前端基础', link: '/accumulate/' },
      {text: '算法题库', link: '/algorithm/'},
      {text: '微博', link: 'https://baidu.com'}      
    ],
    sidebar: 'auto', // 侧边栏配置
    sidebarDepth: 2, // 侧边栏显示2级
  }
};
>>package.json 文件里添加两个启动命令:
"scripts": {
  "dev": "vuepress dev docs",
  "build": "vuepress build docs"
}
>>运行项目:	
yarn run dev 【npm run dev】
>>访问项目地址即可查看网页

# 二、部署

# 1、GitHubPages

官网:https://pages.github.com/

>>新建公有仓库一: USERNAME.github.io 【不用克隆到本地】
>>USERNAME 必须是 Github 的账号名称 >>> 个人的是:sp1203 >>> 【sp1203.github.io】
>>>新建仓库二:ship-blog 【克隆到本地】
>>将搭建好的项目文件拷贝到ship-blog
>>在ship-blog根目录下创建 deploy.sh 文件:

#!/usr/bin/env sh

# 确保脚本抛出遇到的错误
set -e

# 生成静态文件
#npm run build
yarn run build

# 进入生成的文件夹
cd docs/.vuepress/dist

# 如果是发布到自定义域名
# echo 'www.yourwebsite.com' > CNAME

git init
git add -A
git commit -m 'deploy'

# 如果你想要部署到 https://USERNAME.github.io
git push -f git@github.com:sp1203/sp1203.github.io.git master

# 如果发布到 https://USERNAME.github.io/<REPO>  REPO=github上的项目
# git push -f git@github.com:USERNAME/<REPO>.git master:gh-pages

cd -

>>仓库二负责开发,仓库一负责显示网站内容,即仓库二开发完成后自动发布到仓库一
>>在 package.json 文件夹中添加发布命令
"scripts": {
    "dev": "vuepress dev docs",
    "build": "vuepress build docs",
    "deploylinux": "bash deploy.sh",	#linux下使用bash启动deploy.sh
    "deploywindows": "start deploy.sh"	#windows下使用start启动deploy.sh
  }

>>根据系统执行发布命令:yarn run deploywindows 【npm run deploywindows】
>>访问地址:https://sp1203.github.io/ 

# 三、注意事项

# 1、GitHub常见错误

>>克隆或提交项目的时候肯能出现以下错误:
Permanently added the RSA host key for IP address '13.250.177.223' to t he list of known hosts.
>>此错误为自己的GitHub没有添加公钥
>>可以用cmd运行【ssh -T git@github.com】测试下:
	存在公钥返回:Hi sp1203! You've successfully authenticated, but GitHub does not provide shell access.
	不存在则返回:Permission denied (publickey).
>>可以用cmd执行【ssh-keygen -t rsa -C "GitHub账号"】 >>> 【ssh-keygen -t rsa -C "sp1203"】,一直Enter下去生成公钥如下所示:

D:\ship-hub\ship-blog\docs\.vuepress\dist>ssh-keygen -t rsa -C "sp1203" #Enter
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\vic/.ssh/id_rsa): #Enter
Enter passphrase (empty for no passphrase):   #Enter
Enter same passphrase again:	#Enter
Your identification has been saved in C:\Users\vic/.ssh/id_rsa. 
Your public key has been saved in C:\Users\vic/.ssh/id_rsa.pub.		#公钥保存路劲
The key fingerprint is:
SHA256:0nRekE1EpF3dIc+mGRVgr4ba+spXijnsyd2lmcdROpY sp1203
The key's randomart image is:
+---[RSA 2048]----+
|          .B=+o=+|
|          .+o.* o|
|        . o o. = |
|       o o .. * .|
|      . S .. = o.|
|       .  o ..E. |
|        ..o.o..o.|
|        o=+o. =o |
|        .B=o =.  |
+----[SHA256]-----+

D:\ship-hub\ship-blog\docs\.vuepress\dist>

>>打开公钥路劲找到id_rsa.pub文件 >>> linux下可用cat命令查看内容,windows下用记事本打开即可查看内容
>>在github上添加刚刚生成的公钥
	GitHub >> 用户 >> Settings >> SSH and GPG keys >> New SSH key
>>title:随便填即可,此处为【ship-blog】
>>key:【id_rsa.pub】里的内容
>>添加完成后就能正常克隆和提交项目文件了。

# 2、使用自己的域名

>> 购买域名【www.gooder.top】 >> 解析 
>> 添加一个记录类型为CNAME,主机记录为@,解析线路默认,记录值为github的仓库名【sp1203.github.io】,TTL可选默认10分钟
  【注意】:阿里云的域名主机记录为@时,使用CNAME类型保存时会提示CNAME与MX冲突,所有依旧使用A类型,将记录值改为ip地址即可,ip地址可以通过		   ping【sp1203.github.io】获取。
>>记录类型下拉列表都有说明。若你需要你的网址有无www.都能跳转,可以再添加一个www主机记录。
>>在GitHub上添加CNAME文件
>>在仓库一 USERNAME.github.io 中找到 Settings > Custom domain 把 域名【www.shipblog.top】 添加进去即可。

image-20200928160013218