事情是这样子的, 我的移动硬盘丢了, 网盘上的数据也找不到了, 之前的 Hexo 博客很久没更新了, 今天想重新搞一下, 但是 Hexo 上传到 github 的都是渲染后的 html 文件, 格式最友好的 markdown 文件却不能上传(这一点实在比不上 Jekyll)。就算我 git clone
下来 sxw2k.github.io 也找不回我的 markdown 文件了, 幸亏简书能直接打包下载全部的 markdown 文章, 我下载完加工一下格式就好了。
Hexo 静态博客的的开头有如下这样的格式:
---
title: 文章标题
date: 2016-09-15
tags: Perl 6
comments: false
---
而我下载的文章没有这些标题, 需要进行插入; 并且写文章的时间也不好统计, 那就偷个懒, 使用随机的日期:
use v6;
my @a = Date.new('2015-03-14') .. Date.new('2016-09-15');
for dir(test => /\. md$/) -> $file {
my $filename = $file.path.subst(/\.md/, '');
my @lines = $file.lines;
my $out = open "$filename.markdown", :w;
my @header = (
"---",
"title: $filename",
"date: @a.pick()",
"tags: Perl6",
"categories: Perl 6",
"---"
);
# 写入 headers
for @header -> $header {
$out.say($header);
}
for @lines -> $line {
$out.say($line);
}
close($out);
}
Date.new('2015-03-14') .. Date.new('2016-09-15');
用于生成某个时间段之间的日期。
然后用于 _post
目录的 markdown 文件就准备好了。执行 hexo g
命令然后就报错了。这个诡异的错误:
FATAL Cannot set property 'lastIndex' of undefined
我以为是 markdown 文件中的内容有某些 hexo 解析不了的东西, 于是我一部分一部分地手工尝试 hexo g
, 结果都能通过, 但是偶尔还会出现上述错误。我觉得可能是我不够仔细, 于是由写了一个脚本来一个一个验证:
use v6;
chdir "E:\\Hexo\\source\\_posts\\";
my $from_dir = "E:\\Perl-6-Tips\\";
my $to_dir = "E:\\Hexo\\source\\_posts\\";
my $err = open 'err.txt', :w;
for dir(test => /\. md|markdown $/, $from_dir) -> $file {
my $filename = $file.basename.subst(/\.md/, '');
my $to = $to_dir ~ $filename;
# say "------> 正在处理 $file...";
copy($file, $to);
my $exitcode = shell 'hexo generate >> errrooo.txt';
if $exitcode == 1.Int {
say "!!!!!!不能处理 $filename!!!!!";
$err.say($filename);
}
unlink $to;
}
$err.close();
运行了 2 遍下来没有报错。 说明这些 markdown 文件没有格式上的错误。但是一次性地把所有这 100 多个文件全部放进 _post
目录中再运行 hexo g
时, 那个诡异的错误又粗线了!! (黑人问号???)。WTF!
我就想弄个博客而已。我要换到 CentOS 上去。
# 使用 wget 下载 node
./configure
make
make install
推荐使用淘宝的node 镜像
-- 昨天已经找到问题的原因了, 是在 Hexo 的 _config.yml
文件中的高亮功能设置错了:
highlight:
enable: true
line_number: true
auto_detect: false
tab_replace:
其中的 auto_detect 应该设置为 false。
最近切换到 Hugo 了
~/blog/ohmysummer% hugo new content/Seq和摇滚.md