环境初始化
以Windows环境为例
安装git
安装nodejs(通过nvm安装)
安装nvm
下载nvm-windows_setup.exe并安装,编辑nvm安装路径下的settings.txt文件,添加如下两行(设置node和npm淘宝镜像下载源):
1
2node_mirror: https://npm.taobao.org/mirrors/node/
npm_mirror: https://npm.taobao.org/mirrors/npm/打开cmd命令窗口,输入
nvm -v
查看安装的nvm版本安装node和npm
在命令窗口中输入
nvm install stable
安装最新nodejs稳定版本(同时自动安装npm)或者指定版本号如nvm install 20.5.1
,随后通过nvm use 版本号
选择要使用的版本(可以通过nvm list
查看当前安装的所有nodejs版本以及正在使用的版本)。可以通过node -v
、npm -v
查看安装的版本号。之后设置npm package淘宝源(否则npm安装包可能下不动):npm set registry https://registry.npm.taobao.org/
安装Hexo
执行命令
npm install -g hexo-cli
建站
创建个人博客文件夹,设路径为path/myblog/,初始化博客文件夹:
1
2cd /path/myblog/ #之后的所有命令都要先cd进入博客根目录,不再赘述
hexo init初始化后得到一个package.json文件(描述了项目所依赖的包),然后再执行
npm install
安装相关依赖生成静态网页,并在本地发布
1
2hexo generate
hexo server最后通过地址"http://localhost:4000"即可访问
基本配置
选择某个现成的主题,一般下载后放到博客根目录下的主题文件夹中,即myblog/themes/,Hexo将会根据主题来生成静态页面。以Melody主题为例,根据其说明文档一步一步进行配置,且该主题可以直接通过npm install --save hexo-theme-melody
命令安装(放在myblog/node_modules/目录下)
LaTex支持
说明文档有所遗漏,再细说一下,先安装Kramed,同时卸载掉默认的渲染引擎marked:
1
2npm uninstall hexo-renderer-marked --save
npm install hexo-renderer-kramed --save再修改melody.yml主题配置文件:
1
2
3mathjax:
enable: true
cdn: https://cdn.bootcss.com/mathjax/2.7.2/MathJax.js?config=TeX-AMS-MML_HTMLorMML由于LaTeX与markdown语法存在语义冲突,所以还需要对默认的转义规则进行修改,修改myblog/node_modules/kramed/lib/rules/inline.js中的两处内容:
1
2escape: /^\\([`*\[\]()# +\-.!_>])/, //替换:escape: /^\\([\\`*{}\[\]()#$+\-.!_>])/,
em: /^\*((?:\*\*|[\s\S])+?)\*(?!\*)/, //替换:em: /^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,注意,由于node_modules文件夹不会被git跟踪(该项位于.gitignore中),因此在博客迁移后需要重新配置(所以应尽量避免修改node_modules文件夹中的内容以减少麻烦)
部署到GitHub Page
在GitHub上新建仓库,命名为:用户名.github.io,再修改_config.yml文件:
1
2
3
4deploy:
type: git
repo: git@github.com:用户名/用户名.github.io
branch: master注意,如果本地添加了多个GitHub账号的密钥,应根据~/.ssh/config文件修改上述repo地址为:Host:用户名/用户名.github.io,最后执行部署:
1
2
3hexo clean
hexo g
hexo d //和上一条命令可以合并为:hexo g -d,如果报错:ERROR Deployer not found: git,先执行:npm install hexo-deployer-git --save部署成功后,通过地址"https://用户名.github.io"即可访问博客
博客迁移和同步管理
- 在本地博客根目录myblog/下执行
git init
初始化仓库,以对魔改的主题和配置文件(简称为环境数据)进行版本控制,再添加远程仓库关联:git remote add origin git@github.com:用户名/用户仓库.git
,最后执行git push origin master
同步本地环境数据到远程仓库(的master主分支)即可,如果要推送到远程仓库的其他指定分支(可以不存在),则执行git push origin master:指定远程仓库分支名
(参考git思维导图) - 现在迁移博客到其他电脑设备是很容易的,首先环境初始化(安装git、nodejs和Hexo),然后克隆上述远程仓库(的主分支)至本地:
git clone git@github.com:用户名/用户仓库.git
(也可以克隆仓库下的指定分支,git clone -b 指定分支 git@github.com:用户名/用户仓库.git
),再根据packge.json安装依赖,最后hexo g
、hexo s
就能在本地重新打开博客了
- 在本地博客根目录myblog/下执行
Algolia搜索
首先注册Algolia账户,新建index,并获取Application ID、Search-Only API Key、Admin API Key,然后执行
npm install --save hexo-algolia
,并配置_config.yml:1
2
3
4algolia:
applicationID: 'application id'
apiKey: 'search-only api Key'
indexName: 'index name'再配置melody.yml:
1
2
3
4
5
6
7
8algolia_search:
enable: true # or false
hits:
per_page: 10 # the number of search results per page
labels:
input_placeholder: Search for Posts
hits_empty: "We didn't find any results for the search: ${query}" # if there are no result
hits_stats: "${hits} results found in ${time} ms"最后执行
hexo algolia
生成索引文件并上传到Algolia服务器,出错:ERROR [hexo-algolia] Please set an HEXO_ALGOLIA_INDEXING_KEY environment variable to enable content indexing. ERROR >> Read https://npmjs.com/hexo-algolia#api-key for more informations,根据提示,直接在当前cmd中创建该环境变量(重启窗口会失效,建议“此电脑右键-属性-高级系统设置-环境变量”,博客迁移后注意要重新配置):set HEXO_ALGOLIA_INDEXING_KEY=admin api key
,重新执行hexo algolia
,成功