Hexo 笔记

Hexo笔记

安装

1
npm install hexo-cli -g

前提:需要安装好node.js和git

1
2
3
4
5
6
7
8
9
10
11
# hexo init 需要在一个空文件夹执行
hexo init

# or
hexo init directory

# cd directory
npm install

# 启动
hexo server

然后访问: http://localhost:4000 就可以看到页面了

常用命令

清空网站缓存

1
2
3
hexo clean
# or
hexo cl

新增文章

1
hexo new "New Post"

启动服务

1
2
3
hexo server
# or
hexo s

生成静态文件

1
2
3
hexo generate
# or
hexo g

发布至远程

1
2
3
hexo deploy
# or
hexo d

需要修改_config.yml,添加远程发布配置参数

1
2
3
4
5
6
7
# Deployment
## Docs: https://hexo.io/docs/one-command-deployment
deploy:
type: git
repo: git@gitee.com:sjdt/sjdt.git
branch: master
message:

npm i –save hexo-wordcount

常用组合命令

1
2
3
4
# 清理、生成、本地发布
hexo cl && hexo g && hexo s
# 清理、生成、远程发布
hexo cl && hexo g && hexo d

更换主题

可以从(https://hexo.io/themes/)下载主题,下载到themes目录下,然后修改_config.yml文件中的theme为对应的主题名称(文件夹名)即可:

1
theme: hexo-theme-matery

SEO 优化

使用hexo-abbrlink实现URL地址再编码:

1
npm install hexo-abbrlink --save

配置:

1
2
3
4
5
6
7
url: http://sjdt.gitee.io
#permalink: :year/:month/:day/:title/ # 默认的URL层次太深,不利于SEO
#permalink: :title/
permalink: archives/:abbrlink.html
abbrlink:
alg: crc32 # 算法:crc16(default)and crc32
rep: hex # 禁止:dec(default) and hex

Gitee Pages

Gitee Pages 是一个免费的静态网页托管服务,您可以使用 Gitee Pages 托管博客、项目官网等静态网页。如果您使用过 Github Pages 那么您会很快上手使用 Gitee 的 Pages服务。目前 Gitee Pages 支持 JekyllHugoHexo编译静态资源。

注意需要在下面的位置申请开通 Gitee Pages服务,需要实名认证并上传证件图片并等待一个工作日审核

开通后需要建立一个与用户名相同的仓库,比如我的用户名为sjdt,
那么我的gitee page 仓库地址就是:[git@gitee.com:sjdt/sjdt.git]

自动化

  1. 安装playwrite库
1
python -m playwright install

playwrite文档:https://playwright.dev/python/docs/intro/

将你的Gitee用户名和密码添加到环境变量的gitee_usernamegitee_username环境变量中,
然后就可以使用下面的脚本自动提交并更新GiteePages了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/usr/bin/env python3
# -*- coding:UTF-8 -*-
import os
from playwright.sync_api import sync_playwright

USERNAME = os.getenv("gitee_username")
PASSWORD = os.getenv("gitee_password")

GITEE_PAGES_URL = 'https://gitee.com/sjdt/sjdt/pages'

def main():
print("========================== deploy job : started ==========================")
os.system("cd /Users/yiny/Sites/moonwhite.net;hexo cl && hexo g && hexo d")
print("========================== deploy job : publish ==========================")
with sync_playwright() as p:
for browser_type in [p.chromium]:
browser = browser_type.launch(headless=False)
page = browser.new_page()
#page.screenshot(path=f'example-{browser_type.name}.png')
page.goto('https://gitee.com/login')
page.click('input[name="user[login]"]');
page.fill('input[name="user[login]"]', USERNAME);
page.click('input[name="user[login]"]');
page.fill('input[name="user[password]"]', PASSWORD);
page.click("input[value='登 录']")
page.wait_for_timeout(5000)
page.goto(GITEE_PAGES_URL)
page.on("dialog", lambda dialog: dialog.accept())
page.click(".update_deploy")
page.wait_for_selector('span:text("已开启 Gitee Pages 服务")', timeout=60 * 1000, state='visible')
browser.close()
print("========================== deploy job : finished ==========================")
if __name__ == '__main__':
main()

Hexo的使用