textlintのpretty-error formatterをオンメモリで使用する
背景
textlintのpretty-errorは修正箇所がひと目でわかるようなエラーメッセージを出力する。textlintをCLI以外で使用する場合は、この形式で出力するのが、修正するべき箇所がわかりやすいため好ましい。
このpretty-errorの実装はローカルにmarkdownファイルが存在することが期待されている。
これはオンメモリでの処理を行う際に一度ディスクに書き出す必要がある。しかし諸事情によりそれが許されていない場合があるため、今回はpretty-errorのコードを改変することで、オンメモリでformatterの出力を得る。
変更
変更は難しくなく、3行程度の修正で済む。
code:diff
let errors = 0;
let warnings = 0;
let totalFixable = 0;
- results.forEach(function(result) {
- const code = require("fs").readFileSync(result.filePath, "utf-8");
+ const { codes } = options;
+ results.forEach(function(result, i) {
const messages = result.messages;
if (messages.length === 0) {
return;
optionsにcodesが渡されることを期待するようにしている。
I/Fの変更という大きな仕様変更だけどtextlintにp-rを送りたい