Jekyll - Octopress から記事ファイルの移行!

更新日時:


Octopress から Jekyll への移行すべく Markdown 形式の記事ファイルを編集しました。

0. 前提条件

  • LMDE 3 (Linux Mint Debian Edition 3; 64bit) での作業を想定。
  • Ruby 2.6.0-p0 での作業を想定。
  • Jekyll で使用するテーマは Gem 化された Minimal Mistakes を想定。
  • GitHub Pages での運用は想定していない。(自前サーバでの運用を想定)

以下、この度、当方の環境に合わせて行った作業。(基本的に、コマンドラインから sed コマンドで一括変換)

1. layout 設定値の変更

layout の設定値を post から single に変更する。

$ find ./_posts -name "*.md" | xargs sed -i -e 's/^layout: *\?post/layout: single/'

2. date の書式変更

date: YYYY-MM-DD hh:mmdate: YYYY-MM-DD hh:mm:ss +0900 に変更する。(不要かもしれないが、念の為)

$ find ./_posts -name "*.md" | xargs sed -i -e 's/^date: *\([^ ]\+\) \+\([0-9]\{2\}:[0-9]\{2\}\)/date: \1 \2:00 +0900/g'

3. keywords を削除

今回の移行に直接は関係ないが、 SEO 的に HTML 内 meta タグでの KEYWORD の指定はもはや不要なので、削除しておく。

$ find ./_posts -name "*.md" | xargs sed -i -e ':lbl1;N;s/^\(\-\-\-.*\?\).*\?keywords:.*\?\-\-\-/\1---/;b lbl1;'

4. 複数行コードブロックの変更

複数行コードブロックをLiquid タグ highlight に変更するために、

``` lang file_name
```

File: `file_name`  

{% highlight lang linenos %}
{% endhighlight %}

に変更する。但し、

``` text
```

等のファイル名のないものや行番号の不要なものは(取り急ぎ)そのまま。

$ find ./_posts -name "*.md" | xargs sed -i -e ':lbl1;N;s/``` \+\([^ \n]\+\) \+\([^ \n]\+\)\(.\+\)```/File: `\2`\n\n{% highlight \1 linenos %}\3{% endhighlight %}/;b lbl1;'

5. コードブロック内 [] の変更

コードブロック内の []{{ "[" }}{{ "]" }} に変更する。

面倒&量が少ないので手動で。2ファイルのみだった。

6. 記事間リンクの変更

_config.yml で指定した site.baseurl に対応するために、

[xxxx](/yyyy/mm/dd/xxxx.png "xxxx")

[xxxx]({{site.baseurl}}/yyyy/mm/dd/xxxx.png "xxxx")

の書式に変更する。

$ find ./_posts -name "*.md" | xargs sed -i -e 's/\](\/\([0-9]\{4\}\)\//]({{site.baseurl}}\/\1\//g'

7. 画像リンクの変更

_config.yml で指定した site.baseurl に対応するために、

![xxxx](/images/yyyy/mm/dd/xxxx.png "xxxx")

![xxxx]({{site.baseurl}}/images/yyyy/mm/dd/xxxx.png "xxxx")

の書式に変更する。

$ find ./_posts -name "*.md" | xargs sed -i -e 's/\](\/images\//]({{site.baseurl}}\/images\//g'

また、 Octopress 用記事ファイル内に

{% img /images/yyyy/mm/dd/xxxx.png 'xxxx' 'xxxx'%}

ような書式のものも残っていたので、同様に

![xxxx](/blog/images/yyyy/mm/dd/xxxx.png "xxxx")

の書式に変更。

$ find ./_posts -name "*.md" | xargs sed -i -e 's/{% *img \+\(\/images[^ ]\+\) \+'\''\(.\+\)'\'' \+'\''\([^ ]\+\)'\'' *%}/![\3]({{site.baseurl}}\1 "\2")/g'

8. more タグの変更

_config.ymlexcerpt_separator: "<!--more-->" とスペース無しで指定したので、念の為、スペースを取り除く。(一覧表示時に抜粋処理で失敗しないよう)

$ find ./_posts -name "*.md" | xargs sed -i -e 's/<!-- \+more \+-->/<!--more-->/g'

9. MathJax (数式)のインライン表示変更

実際には、 {% m %}{% em %}$$$$ に変更する。

$ find ./_posts -name "*.md" | xargs sed -i -e 's/{% *e\?m *%}/$$/g'

10. MathJax (数式)の複数行表示変更

実際には、 複数行の

{% math %}
 :
{% endmath %}

$$
 :
$$

に変更。

$ find ./_posts -name "*.md" | xargs sed -i -e 's/{% *\(end\)\?math *%}/$$/g'

11. その他

  • デフォルトだと、フィードは feed.xml になるので、 _config.yml を編集。

File: _config.yml

# Jekyll Feed
feed:
  path: "atom.xml"
  • カテゴリ/タグ一覧のページ内リンク(日本語のみ)が正常に機能しない(ブラウザの URL 欄で再確定が必要)ので、 categories.html, tags.html 内の # を削除し、ページ内リンクでなく、直接各カテゴリ/タグのページへ移動する。(URL エンコードも効果なし)

12. 参考サイト


以上。

 

Sponsored Link

 

コメントする