CSS MQPackerのような簡単な変換ライブラリーは概ねPostCSSからやGruntからなどで利用することが想定されている。しかしGruntやgulpに絶望する人が増えた現在、そういった便利環境に縛られない形で実行する手段も用意する必要がありそうな気配がある。ので、追加し始めた。リリースまでにはもうちょっとかかりそう。
標準入力を読んで、変換し、標準出力に吐く。
$ sass style.scss | mqpacker --sort --sourcemap - | csswring --sourcemap - style.min.css
CSSWringと同じく、このような形でパイプすることを想定した簡単なものとして実装している。入力ファイル名で-
を使うと標準入力を読むというだけのものだ。
パフォーマンスという問題はあるものの、npmが実行できる環境なら何も考えずに実行できる仕組みはあると助かることはなくはない。makeからも使えるとかそういう意味でも。パフォーマンスにおいては、実行時における依存パッケージの初期化コストや、パイプにもかかわらずソースマップを使うとファイルの読み書きも発生することなど問題を抱えるが、解決する問題と比べてトントンというところだろう。
こういうパイプでつなぐぞプログラムの作法みたいなものがよくわかっていない。他にもビルド・ツールではよくあるケースの1対多や多対多みたいなソースとビルドの対応関係はどうすればよいのかよくわからなかったりする。こういった作法や定石みたいなものがある程度Node.js界隈でも共有されるようにならないと、npm run-script
とメジャーなシェル・プログラムだけで何とかする世界は実現が難しいんじゃないかなと思っている。
この辺りの話は「我慢」というキーワードでもうちょっと書きたい。