使用hexo搭建博客并上传GitHub
之前在博客园、简书、CSDN等地儿都开过博,一篇文章写好了,我希望能在几个平台可以同步发布,可是操作起来成本不低。几个平台下的富文本编辑器比较起来还是博客园更顺手,看着更舒服,尤其是代码块的操作灵活、准确。而CSDN对代码块内的文字加粗、修改字色后就会出现html文无法解析的情况,混杂着代码和html文本实在太难看了,后来我知道原来是Markdown的代码块规则限制。而且CSDN刚刚才取消了提交文章要审核通过才能发布的限制,审核没有完成之前,连自己都看不到,且不能修改,这让我一度放弃CSDN平台。如果是写普通的文章写作体验最好的是简书,大气、简洁。但简书更适合一般的写作,比较技术化的中间掺杂大量代码的支持还不够好。
作为一名程序员,应该到GitHub上开博,这里是程序员的圣城。花了两天时间研究了一下,发现还蛮简单的,而且md格式也被博客园、简书、CSDN所支持,写完一份应该比较容易复制到这三个平台。我喜欢在本地编辑markdown文件,使用sublime 及其插件Markdown Editing 和 OmniMarkupPreviewer。完成后底稿、资源文件都悉数保存到GitHub,日后查找、修改都很容易。
我用hexo作为静态页面生成器,操作过程遇到不少问题,搞定之后留一份操作记录吧。以后就把[http://palanceli.github.io/blog/]作为我的首发平台了;)
安装环境
安装node.js,去官网下载安装即可,我安装的是最新稳定版。
安装Hexo
sudo npm install -g hexo创建hexo目录并初始化
$ mkdir hexo
$ cd hexo
$ hexo init
- 然后就可以生成网站,启动服务了:
$ hexo clean
$ hexo generate
$ hexo server
- hexo文件夹
先来看一下hexo文件夹下的内容:
hexo/
|- node_modules/ # hexo需要的模块,不需要上传GitHub
|- themes/ # 主题文件,需要上传GitHub的dev分支
|- sources/ # 博文md文件,需要上传GitHub的dev分支
|- public/ # 生成的静态页面,由hexo deploy自动上传到gh-page分支
|- package.json # 记录hexo需要的包信息,不需要上传GitHub
|- _config.yml # 全局配置文件,需要上传GitHub的dev分支
|- .gitignore # hexo生成默认的.gitignore,它已经配置好了不需要上传的hexo文件
关联GitHub
首次先创建GitHub工程blog,并且使用“Launch automatic page generator”生成页面,它会给该工程创建分支gh-pages。
手动为之创建dev分支,未来工程源码会放到dev分支下;hexo生成的网站静态页面会放到gh-pages分支。
- 首次创建GitHub工程后操作dev分支代码
如果是刚创建的GitHub工程,clone dev分支的代码到本地blog-dev/,然后把前面hexo/文件夹下的内容全部拷贝到blog-dev/,注意包括一个隐藏文件.gitignore。
- 已存在GitHub工程的恢复
仍是clone dev分支的代码到本地blog-dev/,然后把hexo/node_modules/拷贝到blog-dev/
再试试生成页面、启动服务,确保是正常的:
$ hexo clean
$ hexo generate
$ hexo server
网上有介绍把package.json文件同步到GitHub,以后每次恢复时执行
$ npm install hexo
$ npm install
$ npm install hexo-deployer-git --save
可是我在不同的机器上试总是出错。只好采取笨办法,每次先hexo init出一个完整文件夹,再把相关文件拷贝到GitHub目录下。千万不要先clone 了blog目录,再在该目录下执行hexo init,因为init会把.git信息删掉。
配置自己的_config.yml
按照如下内容修改blog-dev/_config.yml:
title: Palance's Blog # 标题
subtitle:
description:
author: Palance Li
language: zh-CN # 语言设置
url: http://palanceli.github.io/blog
root: /blog/
翻到最下面,改成:
deploy:
type: git
repository: https://github.com/<自己的github账号>/blog.git
branch: gh-pages
主题
这里有大量的主题https://github.com/hexojs/hexo/wiki/Themes
我非常喜欢Maupassant:https://www.haomwei.com/technology/maupassant-hexo.html,
简洁清晰,而且适配手机、PC各个平台。
- 安装方法
首次在blog-dev/目录下执行如下命令
$ git clone https://github.com/tufu9441/maupassant-hexo.git themes/maupassant
$ npm install hexo-renderer-jade --save
$ npm install hexo-renderer-sass --save
以后建议把blog-dev/themes/maupassant/.git文件夹删掉,把maupassant文件夹随自己的blog-dev上传到GitHub。
以后clone blog-dev后,执行完前面的安装操作步骤后记得执行
$ npm install hexo-renderer-jade --save
$ npm install hexo-renderer-sass --save
- 配置
在blog-dev/themes/maupassant/_config.yml中根据自己的情况修改,比如:
links:
- title: 我的博客园
url: http://www.cnblogs.com/palance/
- title: 我的CSDN
url: http://blog.csdn.net/zchongr
- title: 我的简书
url: http://www.jianshu.com/users/5e527164a8c2
在blog-dev/_config.yml中修改:
theme: maupassant
第一次的工作就完成了,可以提交github到blog-dev了。
上传生成页面
执行
$ cd blog-dev
$ npm install hexo-deployer-git
以后每次执行完
$ hexo clean
$ hexo generate
$ hexo server
生成了静态页面后就可以执行
hexo deploy
完成页面上传。
其它
图片
首先确认_config.yml中有:
post_asset_folder: true
然后在blog-dev/下执行
npm install https://github.com/CodeFalling/hexo-asset-image --save
确保在blog-dev/source/_posts下创建和md文件同名的目录,在里面放该md需要的图片,然后在md中插入

即可在hexo generate时正确生成插入图片。比如:
_posts
|- post1.md
|_ post1
|- pic1.png
在md文件中插入图片时只需写

即可。首次配置完了需要执行一次清除操作,再生成页面:
$ hexo clean
$ hexo generate
$ hexo server
如果没做清除,直接生成页面,在我这里会出现路径错误的情况。
使用hexo搭建博客并上传GitHub的更多相关文章
- 手把手教从零开始在GitHub上使用Hexo搭建博客教程(一)-附GitHub注册及配置
前言 有朋友问了我关于博客系统搭建相关的问题,由于是做开发相关的工作,我给他推荐的是使用github的gh-pages服务搭建个人博客. 推荐理由: 免费:github提供gh-pages服务是免费的 ...
- 基于Hexo搭建博客并部署到Github Pages
基于Hexo搭建博客并部署到Github Pages 之前在简书上写东西,觉得自己还是太浮躁.本来打算用Flask自己写一个,以为是微框架就比较简单,naive.HTML.CSS.JS等都要学啊,我几 ...
- 手把手教从零开始在GitHub上使用Hexo搭建博客教程(二)-Hexo参数设置
前言 前文手把手教从零开始在GitHub上使用Hexo搭建博客教程(一)-附GitHub注册及配置介绍了github注册.git相关设置以及hexo基本操作. 本文主要介绍一下hexo的常用参数设置. ...
- 手把手教从零开始在GitHub上使用Hexo搭建博客教程(三)-使用Travis自动部署Hexo(1)
前言 前面两篇文章介绍了在github上使用hexo搭建博客的基本环境和hexo相关参数设置等. 基于目前,博客基本上是可以完美运行了. 但是,有一点是不太好,就是源码同步问题,如果在不同的电脑上写文 ...
- 手把手教从零开始在GitHub上使用Hexo搭建博客教程(四)-使用Travis自动部署Hexo(2)
前言 前面一篇文章介绍了Travis自动部署Hexo的常规使用教程,也是个人比较推荐的方法. 前文最后也提到了在Windows系统中可能会有一些小问题,为了在Windows系统中也可以实现使用Trav ...
- 利用hexo搭建博客
利用Hexo搭建博客 以前用Octopress搭过博客,折腾了好久才弄出来,当时看到那巨难看的默认主题,繁琐的操作,一点写东西的欲望都没了. 一次逛微博,看见了Hexo.尝试了一下,真的很好用哦. 下 ...
- 使用github+hexo搭建博客笔记
听说github上可以搭博客,而且不用自己提供空间和维护,哈哈哈 作为一名程序猿,github搭博客对我有种神奇的吸引力,赶紧动手试一试 关于如何使用hexo搭建博客网上好的教程多如牛毛,而且这篇博客 ...
- Note | 用Hugo搭建博客并部署到GitHub Pages
目录 1. 本地搭建 1.1 安装Hugo 1.2 创建站点 1.3 新建页面和文章 1.4 使用主题 1.5 修改配置文件 1.6 预览 2. 部署 之前担心过现有博客平台(如博客园,CSDN)突然 ...
- gitcafe 使用hexo搭建博客
--缘由:因为看大家都用github等搭建博客,作为半个程序员的自己,也按捺不住了,终于有空来尝试一把了,选择了和github 相同功能的gitcafe网站,因为在国内比较快,这是大家的看法,下面写一 ...
随机推荐
- 用Azure上Cognitive Service的Face API识别人脸
Azure在China已经发布了Cognitive Service,包括人脸识别.计算机视觉识别和情绪识别等服务. 本文将介绍如何用Face API识别本地或URL的人脸. 一 创建Cognitive ...
- Python学习笔记 - MySql的使用
一.安装MySql模块 Python2.X pip install MySQLdb Python3.X pip install pymysql 二.数据库连接接口 由于Python统一了数据库连接的接 ...
- 蓝桥杯 算法训练 ALGO-152 8-2求完数
算法训练 8-2求完数 时间限制:50.0s 内存限制:256.0MB 问题描述 如果一个自然数的所有小于自身的因子之和等于该数,则称为完数.设计算法,打印1-9999之间的所有完数. 样例 ...
- 线程及同步的性能 – 线程池/ ThreadPoolExecutors/ ForkJoinPool
线程池和ThreadPoolExecutors 虽然在程序中可以直接使用Thread类型来进行线程操作,但是更多的情况是使用线程池,尤其是在Java EE应用服务器中,一般会使用若干个线程池来处理来自 ...
- SpringBoot自动化配置之四:SpringBoot 之Starter(自动配置)、Command-line runners
Spring Boot Starter是在SpringBoot组件中被提出来的一种概念,stackoverflow上面已经有人概括了这个starter是什么东西,想看完整的回答戳这里 Starter ...
- vue-cli脚手架build目录中的karma.conf.js配置文件
本文系统讲解vue-cli脚手架build目录中的karma.conf.js配置文件 这个配置文件是命令 npm run unit 的入口配置文件,主要用于单元测试 这条命令的内容如下 "c ...
- python 继承进阶
继承进阶 面向对象 1.类:具有相同属性和方法 的一类事物 类名可以实例化一个对象 类名可以调用类属性,(静态属性 和(方法)动态属性) 2.对象:也就是实例 对象名:调用对象属性 调用方法 3 ...
- nested exception is java.net.UnknownHostException: mybatis.org异常处理
最近自己写了个小项目(丛林商城V1.0),一个简单的网上商铺:主界面是商品的展示和登录,面对三种角色的人群:一般客户,VIP客户,管理员,与之对应的三种商品价格,登陆后根据具体角色来显示商品的价格:还 ...
- HDU 4912 LCA + 贪心
题意及思路 说一下为什么按LCA深度从深到浅贪心是对的.我们可以直观感受一下,一条的路径会影响以这个lca为根的这颗树中的链,而深度越深,影响范围越小,所以先选影响范围小的路径. #include & ...
- return()函数
在函数中,执行完return()函数后,下面的语句就不会再执行了.例子: <?php function fn() { echo "you are awsome"; retur ...