ready:
- Download git
- Download node.js
- Install hexo
npm install -g hexo
One, initialize hexo
First prepare a folder, open git bash
hexo init
2. Configuration file
Open the _config.yml
file and fill in the items:
- title
- author
- theme
Fill in the warehouse address
Three, install the plug-in tool
npm install hexo-deployer-git --save
Fourth, publish to github
hexo clean && hexo g && hexo d
Write an article:
Create a new .md
file under the Hexo\source_posts file
https://www.jianshu.com/p/189fd945f38f
Article update issue
Interprets the commands:
generated public
command file hexo g
to generate .deploy_git
a command filehexo d
After writing the article, enter the project root directory, mine is/c/workplace/Hexo
1. deleted .deploy_git
, public
you can also delete
hexo clean && hexo g && hexo d
Upload picture problem
Open git bash in the project root directory to download the plugin
npm install hexo-asset-image --save
Generate a folder and a file with the same name for uploading pictures in the blog
hexo n "文件名"
other problems
- Write a space in the title, an error will be reported when generating
- After the local project generates the puclic file, the image path in the html is wrong, you need to go to github to change it (stupid way)
Solve the problem that the hexo-asset-image plugin generates the wrong image path
The file found in the local project is \node_modules\hexo-asset-image\index.js
directly replaced with the following:
'use strict';
var cheerio = require('cheerio');
function getPosition(str, m, i) {
return str.split(m, i).join(m).length;
}
var version = String(hexo.version).split('.');
hexo.extend.filter.register('after_post_render', function(data){
var config = hexo.config;
if(config.post_asset_folder){
var link = data.permalink;
if(version.length > 0 && Number(version[0]) == 3)
var beginPos = getPosition(link, '/', 1) + 1;
else
var beginPos = getPosition(link, '/', 3) + 1;
// In hexo 3.1.1, the permalink of "about" page is like ".../about/index.html".
var endPos = link.lastIndexOf('/') + 1;
link = link.substring(beginPos, endPos);
var toprocess = ['excerpt', 'more', 'content'];
for(var i = 0; i < toprocess.length; i++){
var key = toprocess[i];
var $ = cheerio.load(data[key], {
ignoreWhitespace: false,
xmlMode: false,
lowerCaseTags: false,
decodeEntities: false
});
$('img').each(function(){
if ($(this).attr('src')){
// For windows style path, we replace '\' to '/'.
var src = $(this).attr('src').replace('\\', '/');
if(!/http[s]*.*|\/\/.*/.test(src) &&
!/^\s*\//.test(src)) {
// For "about" page, the first part of "src" can't be removed.
// In addition, to support multi-level local directory.
var linkArray = link.split('/').filter(function(elem){
return elem != '';
});
var srcArray = src.split('/').filter(function(elem){
return elem != '' && elem != '.';
});
if(srcArray.length > 1)
srcArray.shift();
src = srcArray.join('/');
$(this).attr('src', config.root + link + src);
console.info&&console.info("update link as:-->"+config.root + link + src);
}
}else{
console.info&&console.info("no src attr, skipped...");
console.info&&console.info($(this));
}
});
data[key] = $.html();
}
}
});