翔翔の据点

Arrogance is the only obstacle to survival. Not weakness or ignorance.

0%

hexo搭建和使用

-1. 常用命令简化和组合

1
2
3
4
5
6
7
8
hexo g    # 等同于hexo generate,生成静态文件
hexo s # 等同于hexo server,在本地服务器运行
hexo s --debug
Ctrl + C 退出本地服务器

hexo p # 等同于hexo port
hexo d # 等同于hexo deploy,用于将本地文件发布到github上
hexo n # 等同于hexo new,用于新建一篇文章

当本地不想使用默认的4000端口时(比如在服务器上,默认使用80端口),可以使用 port 命令更改启动端口

另外,hexo支持命令合并,比方说 生成静态文件 → 本地启动80端口,我们可以执行

1
hexo s -g -p 80

生成静态文件并发布

1
hexo g -d

hexo文件结构及作用

0. 准备

  1. 注册github账号
  2. 本地安装好git

1. 创建github仓库

仓库名为

1
[your_github_username].github.io

仓库名字一定不能写错!

2. 安装node

Node.js主要用于安装hexo,npm开头的命令都依赖于Node.js

nvm来管理node.js的版本真的很方便,这样就可以根据自己的需要来回切换node.js版本!

安装nvm管理工具(先关掉360等软件,不然会弹出警告!)

从官网下载安装包 https://github.com/coreybutler/nvm-windows/releases,下载红框里面的那个

image-20240112213851906

解压之后,nvm-setup.exe安装

如果出现版本号,即安装成功

image-20240112214131081

查看可用的node.js版本号

1
2
nvm ls anaillable
nvm install node 12.17.0

不要装太低!低了npm不能用,后面用了16.20.2

安装完检查

1
2
node -v
npm -v

随意切换node版本

1
nvm use [版本号]

查看所有node版本

1
nvm ls

3. 安装hexo

(1)安装hexo

鼠标右键任意地方,选择Git Bash,使用以下命令

1
2
3
npm install hexo-cli -g
npm install hexo-deployer-git --save
# 如果不执行第二句,出现“ERROR Deployer not found: git“这样的提示错误

(2)创建放置博客文件的文件夹

  • hexo文件夹,我放置在D盘,D:\blog\hexo
  • 最好不要在中文路径下面,会出现莫名其妙的错误
  • 注意:==以后进行hexo操作都要进入到此文件夹中==

(3)初始化hexo

  • 初始化进入hexo文件夹,鼠标右键选择“Git Bash”,执行以下命令,
  • 这时候会在该文件夹中创建网站所需要的文件
1
hexo init

执行完毕后,将会生成以下文件结构:

1
2
3
4
5
6
7
8
9
10
11
12
.
|-- node_modules //依赖安装目录
|-- scaffolds //模板文件夹,新建的文章将会从此目录下的文件中继承格式
|-- source //资源文件夹,用于放置图片、数据、文章等资源
| |-- _posts //文章目录
|-- themes //主题文件夹
| |-- landscape //默认主题
|-- .gitignore //指定不纳入git版本控制的文件
|-- _config.yml //站点配置文件
|-- db.json
|-- package.json
`-- package-lock.json // hexo的版本和依赖包

(4)安装依赖包

1
npm install

会在Hexo目录中安装 node_modules

(5)生成静态文件

1
hexo g

(6)预览

此时最基本的网站已经搭建好了,只不过是在本地放着,我们可以先预览一下

在git中执行

1
hexo s

这时候,会在本地开启一个http服务,监听4000端口

我们在浏览器访问http://127.0.0.1:4000

3’. 更新hexo

查看hexo版本

1
hexo version

npm-check检查更新

1
2
npm install -g npm-check
npm-check

npm-upgrade更新

1
2
npm install -g npm-upgrade
npm-upgrade

这时候会有一个选择菜单式的持续输出供你选择依赖包的更新与否

其中的 npm install 可以加上参数 -save ,这样

  • 会把依赖包安装到 node_modules 目录中
  • 会在package.json的dependencies属性下添加依赖包的名称和版本号
  • 之后运行npm install命令时,会自动安装依赖包到node_modules目录中

如果不加save参数的话

  • 之后把X包安装到node_modules目录中
  • 不会添加到 package.json 文件的 dependencies 属性中。

再查看hexo文件夹下面的 package.json 文件的 dependencies 属性,可以看到hexo的版本和依赖包已经更新了。

4. 部署本地文件到github

本地文件要发布到github上面,则需要使本地git和互联网上的通信。怎么通信呢?

有两种方法,https和ssh公钥方式。

使用https的话需要每次输入密码,不过配置起来简单。

常用的是ssh公钥的方式。

先来在本地初始化一下git设置吧

a. 本机git初始设置

1、设置姓名和邮箱地址

(安装git时,已经配置好的话,可以跳过这一步)

终端输入:任意目录中都可以

1
2
git config  --global  user.name  "your name"
git config --global user.email your_email@youremail.com

我用的是我的用户名和邮箱设置的

邮箱仅仅是识别用的key,不一定是真实存在的邮箱

设置完成会在~/.gitconfig文件中生成如下配置

gitconfig这个文件在C:\Users\zhx

1
2
3
4
5
6
7
8
9
10
cat ~/.gitconfig

[user]
name = your name
email = your_email@youremail.com
[filter "lfs"]
required = true
clean = git-lfs clean -- %f
smudge = git-lfs smudge -- %f
process = git-lfs filter-process

我用的是我的用户名和邮箱设置的,设置完成会在~/.gitconfig文件中生成如下配置

2、本地生成ssh key

1
ssh-keygen -t rsa -C zhx@qq.com
  • SSH 为 [Secure Shell](https://baike.baidu.com/item/Secure Shell) 的缩写,为建立在应用层基础上的安全协议。

  • SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。

  • 和在linux生成的ssh一样,也可以生成的秘钥时候设置私钥密码(我后来设置了一个没有密码的ssh,每次输入太麻烦了)

  • -t = The type of the key to generate

  • -C = comment to identify the key

所以这个注释你可以输入任何内容,很多网站和软件用这个注释作为密钥的名字

  • 会提示创建文件的路径,以及设置密码(直接回车,即为空密码)

  • 生成id_rsa密钥和id_rsa.pub公钥

  • known_hosts文件,这个文件会把远程计算机的相关信息记录在这个文件里,确保你下次登录的时候是相同的服务器,避免遭受hijack之类的攻击。如果登录的服务器信息有所变动,那你登录的时候就会提示你,然后登录失败。

3、把本机生成的公开的秘钥添加到github中

C:\Users\zhx\.ssh

1
cat ~/.ssh/id_rsa.pub

将公钥复制下来

4、将公钥放在github上

打开github登陆后,点击自己头像下箭头,找到settings(设置)

在左边栏目里面选择SSH keys,然后点击Add SSH key

随便填一个Title,把上面把cat出来的内容全部添加到key文本框里,然后点击add key。

添加成功后,创建github时用到的邮箱会收到GitHub发的一个”A new public key was add to your account”的邮件。(可能会比较慢)

5、使用私人密钥与GitHub进行认证和通信

1
2
3
ssh -T git@github.com

Hi xiangxiang-cpu! You've successfully authenticated, but GitHub does not provide shell access.

b. 将hexo和github进行关联

1、编辑E:\hexo下的_config.yml文件,在_config.yml最下方,添加如下配置

1
2
3
4
deploy:
type: git
repository: git@github.com:thinkerwalker/thinkerwalker.github.io.git
branch: master

说明:

  • hexo的配置文件中任何引号’:’后面都是带一个空格的

  • repository: 后面的地址其实在github上有生成。新建仓库时候,会有生成如下图

    image-20200408150322601

  • 这里发现还有HTTPS,其实HTTPS也可以和本地进行通信,只不过通信时候,每次要求输入GitHub账号密码

2、将本地文件同步到GitHub

1
hexo g -d

此时,我们的博客已经搭建起来,并发布到Github上了,这时可以登陆自己的Github查看代码是否已经推送到对应Repository,在浏览器访问http://xiangxiang-cpu.github.io
就能看到自己的博客了。配置域名后,上面链接会失效???

第一次访问地址,可能访问不了,您可以在几分钟后进行访问,一般不超过10分钟。

5. 发表一篇文章

1、在Git Bash执行命令:

1
$ hexo new “firstblog”

2、这时候会在hexo\source_post文件夹中,生成一个firstblog.md文件,这时候,我们可以在里面编辑内容。

3、可以先在本地预览一下生成的博客

1
2
hexo g
hexo s

4、访问http://127.0.0.1:4000

5、同步到GitHub上

1
hexo g -d

6、访问自己的网址即可查看,https://xiangxiang-cpu.github.io

6. 配置域名

1、在hexo/source文件夹中新建一个CNAME文件,注意不是txt!

然后里面添加自己的网站域名(theworld.ltd)

2、到自己的域名解析中添加CNAME值,主机记录www,解析到username.github.io

image-20200408151636893

  • A记录,指向IP
  • CNAME记录, 当需要将域名指向另一个域名,再由另一个域名提供 IP 地址
  • @主机记录,不用输一级域名(www)也能访问
  • www主机记录,需要输www才能访问

3、hexo g -d

4、等个10min就能用域名访问辣~

7. 安装插件

1
npm install http://.... --save

加save

8. 使用

本地更新完博客后

在hexo根目录下(不是_posts文件夹下)打开git bash

1
hexo g -d

就推送到服务器啦

9. bug

TypeError [ERR_INVALID_ARG_TYPE]: The “mode” argument must be of type number.

image-20240112213129975

原因:node 版本太高了

image-20240112213312194

https://www.jb51.net/article/202124.htm

出现404

https://www.jianshu.com/p/2349c763cc02?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

old. 安装node.js

不用这种方法,容易安装到太高版本的node

  • 下载node.js的网址https://nodejs.org/en/download/

    我选择 Windows Installer (.msi) ,不太喜欢用zip的= =

  • Node.js主要用于安装hexo,npm开头的命令都依赖于Node.js

  • 如果出现以下提示,则代表你的Node.js没有安装或者还未生效,如果已经安装了则重启电脑

    bash: nmp: command not found

  • 查看node版本的命令:在cmd或者git bash

    1
    node -v

介绍npm

https://www.runoob.com/nodejs/nodejs-npm.html

NPM是随同NodeJS一起安装的包管理工具

使用淘宝 NPM 镜像

大家都知道国内直接使用npm的官方镜像是非常慢的,这里推荐使用淘宝NPM镜像。

淘宝NPM镜像是一个完整npmjs.org镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步。

你可以使用淘宝定制的 cnpm (gzip 压缩支持) 命令行工具代替默认的 npm:

1
npm install -g cnpm --registry=https://registry.npm.taobao.org

这样就可以使用 cnpm 命令来安装模块了:

1
cnpm install [name]

查看npm版本

1
npm -v

更新npm

1
2
3
npm install npm -g

npm install -g cnpm --registry=https://registry.npm.taobao.org

安装包

1
2
npm install <Module Name>
包名可以直接是github的链接

包就放在了工程目录下的 node_modules 目录中,因此在代码中只需要通过 require(‘xx’) 的方式就好,无需指定第三方包路径。

全局安装与本地安装

npm 的包安装分为本地安装(local)、全局安装(global)两种,从敲的命令行来看,差别只是有没有-g而已,比如

1
2
npm install express          # 本地安装
npm install express -g # 全局安装
本地安装
  • 将安装包放在 ./node_modules 下(运行 npm 命令时所在的目录),如果没有 node_modules 目录,会在当前执行 npm 命令的目录下生成 node_modules 目录。
  • 可以通过 require() 来引入本地安装的包。
全局安装
  • 将安装包放在 /usr/local 下或者你 node 的安装目录。
  • 可以直接在命令行里使用。

查看安装信息

你可以使用以下命令来查看所有全局安装的模块:

1
$ npm list -g

如果要查看某个模块的版本号,可以使用命令如下:

1
$ npm list grunt

Package.json 属性说明

  • name - 包名。
  • version - 包的版本号。
  • description - 包的描述。
  • homepage - 包的官网 url 。
  • author - 包的作者姓名。
  • contributors - 包的其他贡献者姓名。
  • dependencies - 依赖包列表。如果依赖包没有安装,npm 会自动将依赖包安装在 node_module 目录下。
  • repository - 包代码存放的地方的类型,可以是 git 或 svn,git 可在 Github 上。
  • main - main 字段指定了程序的主入口文件,require(‘moduleName’) 就会加载这个文件。这个字段的默认值是模块根目录下面的 index.js。
  • keywords - 关键字

卸载模块

我们可以使用以下命令来卸载 Node.js 模块。

1
$ npm uninstall express

卸载后,你可以到 /node_modules/ 目录下查看包是否还存在,或者使用以下命令查看:

1
$ npm ls

更新模块

我们可以使用以下命令更新模块:

1
$ npm update express

搜索模块?

使用以下来搜索模块:

1
$ npm search express

-------------------------- the end~    thanks for your reading~ --------------------------