スムーズ移行OctopressからHugoへ


ブログの同期更新:https://keelii.github.io/2016/10/25/migrating-from-octopress-to-hugo-smoothly/
もと
新しいブログが設立されて以来、Octopressというブログフレームワークで静的な文章ページを構築してきた.きれいなデフォルトテーマ、便利なgithub pageなどの機能が私を引きつけました
しかし、最近では自宅用のMacbookのため、新版のSierriaにアップグレードされ、カップは以前にインストールされていたOctopress bundleが失効した.長い間デバッグしていた環境を構築していないうえ、OctopressのMarkdown解析器の古いエラーを発見したため、インストールの簡単なポイントを構成するブログジェネレータを交換することにしました.
このサイトの各種ジェネレータを参考にしてstaticgen、思い切ってHugoを選びました.特に理由はありませんが、ダウンロードしてインストールしてみてください.HugoはGo言語で書かれているので、公式に与えられたバイナリ実行可能ファイルをダウンロードすればいいだけで、いろいろな依存をインストールする必要はありません.それから、いろいろなソースを交換したり、振り回したりする必要はありません.この点でHugoに転入するのに十分です
テーマ
自分はOctopressのデフォルトのこのテーマが好きなので、Hugo開発ドキュメントを読んだ後、元のテーマを厳格に尊重する原則の下で一部の強化スタイルを修正し、Hugoに適したOctopressテーマを作りました.Hugo公式にはOctopressのテーマhugo-octopressがありますが、元のテーマに変更が多すぎて、私は好きではありません.
いどう
文章
Octopressが使用する記事記述ヘッダはyaml形式で、Hugoのtomlに変換する必要があり、自分で手動でNodeJSスクリプトを書いてこの仕事を完成させ、基本的には簡単に完成しました.注意:content/archivesディレクトリの下に置くことをお勧めします.そうすると、元のファイルディレクトリと新しいディレクトリは一致します.
さらにmdファイル名をツッコミ、Octopressのデフォルトは生成時間を接頭辞とし、例えば:2016-06-13-name.markdownである.Hugo永続リンクに移行して元のファイル名フォーマットを維持するには、この接頭辞を乾かさなければなりません(name.md)、これでソートが乱れます.さまざまなエディタやフォルダで作成順に並べ替えないと、違和感もあり不便に見えます
記事リンク
多くの文章が書かれていることを考慮して、検索エンジンはすでに収録されているので、元の文章のリンクフォーマットを維持します.Hugoプロファイルにこのセクションを追加し、ファイル名を使用して永続的なリンクを作成します.
[permalinks]
    archives = "/:year/:month/:day/:filename/"

アーカイブ
Octopressのデフォルトのアーカイブアドレスはarchivesです.これはHugoブログディレクトリcontentにarchivesというディレクトリを直接作成すればいいです.後で新しい文章はこのSectionに準じます.hugo new archives/your-post-name.mdRSS
Octopressのデフォルトはatom.xmlですが、Hugoのデフォルトはindex.xmlです.しかし、Hugoで構成し、一貫性を保つことができます.
RSSUri = "atom.xml"

しかし、実際のテストでは、テンプレート内で{{ .RSSlink }}が呼び出され、常にindex.xmlが返される.手動でテンプレートの中のRSSリンクを{{ .Site.BaseURL }}atom.xmlに変更しても有効になりますか?!これはHugoのバグと推定されています.幸い発見されました.そうしないと、新旧のRSSアドレスが違うので面倒になります.
ページング
Octopressのデフォルトのフォーマットはposts/2で、Hugoのposts/2も同様に構成する必要があります.
paginatePath = "posts"

Hugoのいくつかの基本的な概念
これらの概念は主にテーマを修正する際に用いられる.
Front Matter
markdownファイルの構成説明と同様に、文章のタイトル、時間、リンク、分類などのメタ情報を構成し、テンプレート呼び出しに提供する.
+++
title = "post title"
description = "description."
date = "2012-04-06"
tags = [ ".vimrc", "plugins", "spf13-vim", "vim" ]
categories = [
  "cat1",
  "cat2"
]
+++

Sections
contentの下の1級ディレクトリでは、通常分類の概念がありますが、フォルダ次元の物理的な分離にすぎません.
Types
記事にtype設定が指定されていない場合、記事のデフォルトは現在のセクションに属します.typeはFront Matterで指定できますが、セクションはできません.
Archetype
記事を新規作成するときのデフォルトテンプレートには、指定したFront Matterヘッダが付きます
Taxonomy
分類、ラベル、シリーズといった文章の属性を記述するものはすべてTaxonomy Termsに属する
まとめ
Hugoは確かに良いブログフレームワークで、構成が簡単で、機能が強く、多くのものが「慣例」のデフォルトで提供されています.例えば、TableOfContentsを内蔵し、ブログを書くのに十分です.
しかし、Go言語で書かれているため、このような使いやすいものがあることを知らない人が多いので、コミュニティはあまりよくありません.これがいわゆるプログラミングのギャング論かもしれない.