garaemon.github.io about me
2017 March 19

node-draftlogはnode.jsむけのリッチなログを 実現するライブラリ. 公式のgifを見ると何ができるかがわかりやすい. 特に一度コンソールにプリントした 文字列を、あとで異なる文字列で再描画することを可能にするライブラリ.

node draftlog gif

インストール方法

npm install draftlog

使い方

const DraftLog = require('draftlog');
DraftLog(console); // 初期化

console.info('Hello world from console.info');
const updatable_line = console.draft('Hello world from draft');
console.info('Hello world from console.info after draft');
updatable_line('Update hello world after two conslle.infos');

ここで面白いのは、update_lineで表示される行は, console.infoで標準出力に書いたのとは無関係に あとから任意のタイミングでその行だけ再描画できること.

このようなあとから更新可能な行を作るためには, draft関数を用いる.

実装

node.jsにおいて、標準出力はconsole._stdoutで得られる. 標準出力に流れてくる文字列を監視して, draftが呼ばれたタイミングで 何行目に出力するかを記録している.

標準出力の文字列を監視しているのは, LineCountStraem というクラス.