被 Hexo 静态博客折腾烦死了

事情是这样子的, 我的移动硬盘丢了, 网盘上的数据也找不到了, 之前的 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。

网站地址ohmycloud.github.io

最近切换到 Hugo 了

~/blog/ohmysummer% hugo new content/Seq和摇滚.md

你可能感兴趣的:(被 Hexo 静态博客折腾烦死了)