YAMLから要素を削り取って軽量化するライブラリ作った
YAMLファイルを軽量化するnpmモジュールを作りました。指定した要素を削除または空白にします。
以下に公開してあります。
scraper
というのは削り取るというニュアンスの言葉です。
ちゃんと Travis CI のバッジも付けてます!
なにができるのか?
こんな感じのYAMLファイルがあるとします。
sample:
hoge: これは消したい
fuga: これは空白にしたい
hogehoge:
hoge: これも消したい
fuga: これも空白にしたい
hogera: これはこのまま
piyopiyo:
piyo: これの親を消したい
↑のYAMLに対し、以下のようなことができます。
- key が
hoge
の要素はいらないから削除する - key が
fuga
の要素はいるけど、value はいらないから空白に置換する - key が
piyo
の要素の親要素はいらないから削除する
処理結果として、以下の文字列を出力します。
sample:
fuga: ''
hogehoge:
fuga: ''
hogera: これはこのまま
不必要な要素を削り取って、だいぶYAMLファイルが軽くなりました!
階層のどこにあっても見つけだして削り取ります!
なぜ作った?
普段 Swagger を使って、WebAPIのドキュメントサイトを作っています。
このSwaggerファイルをAmazon API Gatewayにインポートしたところ、容量制限のエラーが発生しました。
このエラーを回避するために、不要な要素を削り取るライブラリを作りました。
インストール方法
本ライブラリの仕様にはNode.jsが必要です。
Node.jsがインストール済みであれば、以下のコマンドでインストールできます。
npm install yaml-scraper
サンプルコード
先ほどの処理のサンプルコードは以下の通りです。
// ライブラリを追加
const fs = require('fs');
const scraper = require('yaml-scraper');
// YAMLファイルを読み込み
const input = fs.readFileSync('./sample.yaml', 'utf8');
// hogeを削除、fugaを空白に置換、piyoの親を削除
const output = scraper(input)
.delete('hoge')
.empty('fuga')
.deleteParent('piyo')
.toString();
// 結果を表示
console.log(output);
御覧の通り、 delete
, empty
, deleteParent
はメソッドチェーンとして提供しています。
さいごに
開発するにあたり、以下の記事を参考にしました。
とてもわかりやすい記事ありがとうございました。