Hexo は、Node.js をベースとした静的サイトジェネレーターです。強力な API を提供し、既存の npm パッケージをWeb開発に統合したり、記事に特定のコンテンツをプログラム的に挿入したりできます。
これはこれまでで最大のリリースであり、多くの新機能、パフォーマンスの向上、バグ修正が含まれています。 私たちのベンチマーク(回帰を検出するためにすべてのプルリクエストで実行)によると、Hexo 5 は500件の投稿を 16秒 で処理しましたが、 4.2.0 では同じ時間で300件の投稿を処理していました。 Hexo は Node.js 10 以上を必要とします。Node.js は2019年12月31日以降、バージョン8のサポートを終了しました。Node.js 10.x はまだサポートされていますが、1年以内に廃止予定(2021年4月)であるため、Node.js 12 以上を使用することをお勧めします。
Hexo をインストールするには、インストールガイド を参照してください。
Hexo v5 にアップグレードするには、`package.json` の次の行を変更してください。
- "hexo": "^4.2.1", |
破壊的変更
refactor(external_link): `load_config` 中に設定値を移行 @SukkaW #4414 #4371
- 新しいオプションについては(v4で導入)、記述方法 セクションを参照してください。
_config.yml # Deprecated
external_link: true|false
# New option
external_link:
enable: true|false
# Deprecated
use_date_for_updated: true
# New option
# https://hexo.dokyumento.jp/docs/configuration#Date-Time-format
updated_option: date- 自動的にオブジェクトに変換されるため、 truthy 値に対して `external_link` をチェックする場合、常に truthy になります。
<% if (config.external_link) { %>
- 以前のバージョンとの下位互換性を維持したい場合
<% if ((typeof config.external_link === 'boolean' && config.external_link === true) || (typeof config.external_link === 'object' && config.external_link.enable === true)) { %>
feat: config.updated_option を追加 @SukkaW #4278
- これは、記事のフロントマターに設定されている場合にのみ「更新日:」を表示したいテーマに役立ちます。
feat(open_graph): フロントマターから 'keywords' オプションを削除 @curbengh #4174
- 検索エンジンは `keywords` をサポートしなくなりました。
fix: 記事のフロントマターを使用してサイトのパーマリンクを上書き @SukkaW #4359
- ユーザー設定
_config.yml permalink: :year/:month/:day/:title/
- フロントマター
source/foo-bar.md
title: foo bar
permalink: breaking-news/- その投稿は `http://yourhexo.com/breaking-news/` で利用できます。
- パーマリンクには、末尾に ` .html` または `/` が必要であることを思い出してください。
permalink: :year/:month/:day/:title/ # default
# or
permalink: :year/:month/:day/:title.htmlグローバル変数から lodash を削除 @SukkaW #4266
- lodash の `_` は Hexo API では使用できなくなりました。
// Dropped
<% const arrayB = _.uniq(arrayA) %>chore/ci: Node.js 8 を削除し、Node.js 14 を追加 @SukkaW #4255
- Node 8 は2019年12月31日に EOL に達しました。
refactor: テーマ設定からサイト設定を削除 @SukkaW #4145
- 以前は `hexo.theme.config` が `hexo.config` にマージされていましたが、設定の競合を避けるために分離されました。
新機能
feat(post_link): 投稿が見つからない場合のエラーメッセージの改善 #4426
- ファイル名が間違っている場合のエラーメッセージがより明確になりました。
未公開投稿のアセットをスキップし、存在する場合は削除 @DaemondShu #3489
- 未公開の投稿がある場合
title: Still a draft....
published: false- その投稿とそのアセットは `public/` フォルダーに生成されません。
feat(extend/injector): 新しい extend Injector を追加 @SukkaW #4049
- 使用方法については、API の ドキュメント を参照してください。
feat: prism ハイライトサポートを追加 @SukkaW #4119
- 使用方法については、ドキュメント を参照してください。
feat(tagcloud): 新しいオプション class と level @stevenjoezhang #4370
- CSS スタイルのためのクラス名を追加する機能。
feat(post_permalink): 投稿パーマリンクに `:second` 属性オプションを追加 @kkocdko #4185
- 例
permalink: :year/:month/:day/:hour/:minute/:second/:title.html
- 使用可能な属性については、パーマリンク を参照してください。
feat(youtube_tag): cookie オプションを追加 @curbengh #4155
- 無効にすると、YouTube 動画の埋め込みに cookie が設定/送信されません。
feat(youtube_tag): プレイリストをサポート @SukkaW #4139
- プレイリストを埋め込む機能。
feat(load_theme_config): 代替テーマ設定をサポート @SukkaW #4120
- テーマは `_config.[name].yml` ファイル(例: hexo-theme-landscape の場合は `_config.landscape.yml`)で設定できます。
- 現在の `_config.yml` と同じように、ルートフォルダーにファイルを配置します。
- 設定の優先順位については、ドキュメント を参照してください。
feat(feed_tag): config.feed の解析をサポート @curbengh #4029
- hexo-generator-feed とのより良い統合。
feat(tag): unregister() メソッドを追加 @SukkaW #4046
- つまり、既存の タグプラグイン を登録解除し、同じ名前の独自のプラグインに置き換えることができるようになりました。
feat(load_config): node_modules 内の theme_dir をサポート @SukkaW #4112
fix(list_tags): 各要素のカスタムクラス @noraj #4059
- list_tags プラグインの各要素 `<ul>`、`<li>`、`<a>`、`<span>` のクラス名をカスタマイズします。
パフォーマンス
- perf(tag): レンダリング最適化 @SukkaW #4418
- perf(external_link): より高速な正規表現と条件の省略記法 @SukkaW #4436
- perf(external_link): 正規表現の最適化 @SukkaW #4008
- perf(filter): 省略記法構文 @SukkaW #4377
- perf(backtick_code): 省略記法 @SukkaW #4369
- perf: 'clean' コマンドで関連のないプラグインの実行を回避 @curbengh #4386
- サードパーティ製コンソールプラグインとの互換性を維持するため、これは`hexo clean`にのみ適用され、`hexo c`エイリアスには適用されません。
- perf(titlecase): 遅延読み込み @SukkaW #4417
- perf(tag/code): パフォーマンス改善 @SukkaW #4416
- perf(post): コードブロックのエスケープを簡素化 @SukkaW #4254
- perf(meta_generator): 不要なチェックを回避 @SukkaW #4208
- perf(external_link): 構成をキャッシュ @SukkaW #4134
- perf(open_graph): htmlTag()の使用を回避し、キャッシュを強化 @SukkaW #4125
- refactor(list_archives): date.format()の呼び出し回数を削減 @dailyrandomphoto #4011
- fix(moment.locale): 間違った名前で繰り返しルックアップするのを回避 @dailyrandomphoto #4007
修正
- fix(box): テーマフォルダ内の.gitとnode_modulesを無視 @jiangtj #4306
- fix: 空のタイトルを許可 @stevenjoezhang #4344
- fix(#4236): post_asset_folder がtrueの場合、「/index」ディレクトリを作成しない @jiangtj #4258
- fix(#4317): タグエスケープのための非貪欲正規表現 @SukkaW #4358
- fix(post): 非貪欲正規表現を使用 @stevenjoezhang #4161
- fix(post): 投稿内でSwigタグを適切にエスケープ @SukkaW #4352
- シングルのバッククォート内のSwigタグは、コード埋め込みとして解釈されるようになりました。
`{% foo %}{{ bar }}{% endfoo %}`
- fix(logging): 関連コマンドでのみデータベースをログ出力 @curbengh #4387
- `Writing database to ${dbPath}/db.json` メッセージは、`hexo clean` と `hexo version` では表示されなくなりました。
- fix(server-cache): 正確なエイリアスと一致する必要がある @curbengh #4388
- 名前が「s」で始まる可能性のあるサードパーティ製コンソールプラグインとの互換性を向上。
- fix(tag-code): `wrap`オプションを解析 @curbengh #4391
- ユーザー設定の`highlight.wrap`オプションが、`codeblock`タグプラグインに正しく渡されるようになりました。
- fix: 使用されていない型チェックを削除 @Himself65 #4398
- fix: エラーオブジェクトからエラーコードに直接アクセス @SukkaW #4280
- ネイティブJS APIとの互換性を向上。
- fix: 余分な行EOFを使用した`load_plugin` @SukkaW #4256
- fix: バッククォート内のコード解析エラー @seaoak #4229
- fix(toc_helper): クラス名をエスケープし、null IDを処理 @curbengh #4009
- fix(meta_generator): 順序の異なる既存の`<meta>`に一致 @SukkaW #4017
- fix(excerpt): より厳格な正規表現 @curbengh #4443
- 現在、抜粋タグ の以下のバリアントのみが有効です。
<!--more-->
<!-- more-->
<!--more -->
<!-- more -->
リファクタリング
- refactor(meta_generator): 空を無視しなくなった @SukkaW #4442
- refactor(external_link): `load_config`中に構成を移行 @SukkaW #4414
- 配列#reduceの削減 @segayuu #4299
- `createSha1Hash()`と`pipe()`の正しい使用方法 @seaoak #4323
- refactor(post): Promiseの削減 @SukkaW #4337
- refactor: コードの簡素化 @2997ms #4408
- refactor(external_link): 正規表現のフィルタリング @segayuu #4412
- refactor(hexo): 生成前に`theme_config`をマージ @SukkaW #4360
- refactor(nunjucks): 専用のNunjucksレンダラー @SukkaW #4356
- refactor: hexo-util#HashStreamの削除 @SukkaW #4279
- refactor(toc): htmlTagの使用を回避 @SukkaW #4183
- refactor(hexo_index): 使用されていないパラメータを削除 @curbengh #4153
- Refactor(class): プロトタイプをクラス構文に置き換え @segayuu #4151
- refactor: スプレッド演算子を使用したオブジェクトのコピー @SukkaW #4140
- refactor: コードの簡素化 @Himself65 #4138
- refactor: Object.entriesの利用 @SukkaW #4118
- refactor: hexo-util pr-169の利用 @SukkaW #4045
- refactor(hexo/index): Setの使用 @SukkaW #4013
- refactor: クラス構文 @SukkaW #4100
- refactor(helper): マイナーな変更 @SukkaW #4061
- style: asyncArrowのためのスペース @SukkaW #4102
- ストリームの削減 @segayuu #4333
その他
- refactor: シェルスクリプトをJavaScriptに移植 @Himself65 #4405
- refactor(console/generate): クラスとデストラクチャリング代入 @SukkaW #4338
- hexo-fsにコールバックを渡さないように修正 @segayuu #4339
- style: ES6文字列拡張とデストラクチャリング @SukkaW #4357
- TravisとAppveyorをGitHub Actionsに移行
- ci(benchmark): flamegraph生成 @SukkaW #4000
- ci(flamegraph): 0xの修正 @SukkaW #4116
- lgtm.comで発見された問題の修正
- refactor(benchmark): マイナーな変更 @SukkaW #4411
- github(issue_template): 特殊な通知を追加 @SukkaW #4348
- 中国語のissueテンプレートを追加
完全な変更ログについては、リリースノートを参照してください。