Markdownで書かれた CHANGELOG ファイル を解析する node.js用のライブラリ「changelog-parser」の紹介です。
プロジェクトを進めていく上で、プロジェクトフォルダ内に アップデートログを残していくことは珍しいことではありません。
特にオープンソースのプロジェクトは、' READEME.md ' ファイルとセットになっていることが多く、 レポジトリ内で ' CHANGELOG.md' というファイルを見かけた事もあるのではないでしょうか。
そして、多くのCHANGELOGファイルはmarkdownで記述されています。
# チェンジログの例
## version 1.1.0 - 2018-01-10
○○の項目が編集可能になりました
- モジュール2の追加
- モジュール1のバグを再度修正
- 依存モジュールAをバージョン2にアップデート
## version 1.0.1 - 2018-01-02
- モジュール1のバグを修正
## version 1.0.0 - 2018-01-01
本番環境リリース
そんな markdown形式で書かれた CHANGELOG ファイルを解析して、javascript オブジェクトに変換出来る node.js用のライブラリが「changelog-parser」です。
- Markdownで記述された changelog ファイルを解析し、Javascriptオブジェクトに変換できる
changelog-parser は ' npm
' 又は ' yarn
' を使ってインストールします。
# npm
npm i changelog-parser --save
# yarn
yarn add npm changelog-parser
# global にも インストール可能です
# npm install -g changelog-parser
# changelog-parser path/to/CHANGELOG.md # 実行
changelog-parser は、第一引数に markdownがあるファイルのパスを通して、コールバック処理を書くだけなので簡単に使うことができます。
/// changelog-parserを使った例
const parseChangelog = require("changelog-parser");
// コールバック
parseChangelog("./CHANGELOG.md", (err, result) => {
if (err) throw err;
console.log(result); // changelogのオブジェクトが返ってきます
});
// 第二引数の代わりに then メソッドを渡すとPromiseで値が返ってきます。
parseChangelog('./CHANGELOG.md')
.then(function(result) {
// changelog オブジェクト
})
.catch(() {
// エラーが起きた時の処理
})
markdownファイルを読み込むと、以下のオブジェクトが返ってきます。
- title : markdownの見出し ( #
の見出し )
- versions : ##
以下の情報
- version : ##
で付けたバージョン ( e.x.p : 1.0 )
- title : ## の本文
- date : ## 内の日付(yyyy-mm-dd ) e.x.p: - 2018-01-10
- body : ## 下で記述したテキスト全て
- parsed : リスト形式で記述したテキスト ( e.x.p : -
, *
)
// CHANGELOG.md
# タイトル
## Ver. 1.0.0 - 2018-01-10
本文
- リスト1
- リスト2
// changelog-parserで上記のCHANGELOGを読み込んだ時に返ってくるオブジェクト
{ versions:
[ { version: '1.0.0',
title: 'Ver. 1.0.0 - 2018-01-10',
date: '2018-01-10',
body: '本文\n- リスト1\n- リスト2',
parsed: [Object] } ], // parse内は listのテキストが配列で入っています
title: 'タイトル' }
changelog-parserは javascript オブジェクトに変換出来るので、JSON形式に変換してから 言語を問わず使えるように ' CHANGELOG.json ' ファイルを作成なんてことも簡単に出来ます。
const fs = require('fs');
const parseChangelog = require("changelog-parser");
parseChangelog('./CHANGELOG.md', (err, result) => {
if (err) throw err;
// CHANGELOG.jsonとして保存
fs.writeFileSync('./CHANGELOG.json', JSON.stringify(result), "utf8");
});
以上が changelog-parser の紹介でした。作成したjsonファイルを読み込んで、APIドキュメント内でチャンジログを表示させたり、Electronアプリ内の更新情報表示で使うなど、開発言語を問わず多種多様な使い方ができそうです。
GitHub : hypermodules/changelog-parser