changelogを解析するnode.jsライブラリ「changelog-parser」



 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」です。

changelog-parser で出来ること 

- Markdownで記述された changelog ファイルを解析し、Javascriptオブジェクトに変換できる

changelog-parser のインストール

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 の使い方

 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");
});


Summary

 以上が changelog-parser の紹介でした。作成したjsonファイルを読み込んで、APIドキュメント内でチャンジログを表示させたり、Electronアプリ内の更新情報表示で使うなど、開発言語を問わず多種多様な使い方ができそうです。

GitHub : hypermodules/changelog-parser

 

この記事のカテゴリ
プログラミング

この記事に付けられているタグ