今年npm publishしたモジュールについて
この記事はNode.js Advent Calendar 2013 - Adventarの3日目の記事です。
今年npm publishしたモジュールについて、ということで(今年、ってまだ12月終わってないのだけど)私が2013年01月01日から今日2013年12月03日までにpublishしたモジュールについて書いていきます。
mktemp
npm / github
このモジュールは、mktempコマンドのようなモジュールです。
var mktemp = require('mktemp'), temp; // "ランダムな値.tmp"というファイル名の空ファイルが生成され、 // tempには"ランダムな値.tmp"が代入される。 temp = mktemp.createFileSync('XXXXXXXXXX.tmp');
というような使い方をします。
例に書いた同期関数だけでなく、非同期関数もあります。あとファイルの生成だけでなくディレクトリを生成する関数もあります。
このモジュールで初めてPull Requestをもらったりしました。(しかもCoffeeScriptReduxの人!)
それほどパッとしないモジュールですが、無かったら無かったで微妙に面倒なのでニッチなモジュールとしてはまあまあ良いものが出来たのかなと思います。
deepcopy
npm / github
このモジュールは、オブジェクトなどをディープコピーするモジュールです。
この手のモジュール、やはりnpmにはいくつかある(cloneとか)ようです。ということに最近気がつきました。
ちなみにこのモジュール、ブラウザでも動作します。bowerでインストールできたりもします。
なので、ブラウザとnode.jsで共有できるコード中でディープコピーする必要がある場合などは良いかもしれません。……かなり限定的ですが。
あとはjQueryやunderscore.jsなどを使うまでもなく、本当にディープコピーだけできれば良いときなどでしょうか。これもあまりなさそうではありますが。
ltsv
npm / github
このモジュールは、LTSVを処理するモジュールです。
最初はJSONに変換するストリームが無かったのですが、ltsv-streamを見てぐぬぬとなったので、そこからStreamを調べて実装したりという経緯があったり。
このモジュールもブラウザでも動作します。bowerでインストールできたりもします。
ltsview
npm / github
このモジュールは、Text::LTSV付属のltsviewっぽいコマンドです。
内部では上記のltsvを使用しています。確かLtsvToJsonStreamを使っていたような気がします。(覚えてない)
全然メンテできていません……でも後々ちゃんと作り直したいです。
split-stream
npm / github
このモジュールは、ストリームを文字列もしくは正規表現で分割するストリームです。
これもnpmに似たようなものがいくつかあった気がします。これも全然メンテできていません……メンテしたいです。
generator-prototyping
npm / github
このモジュールは、Yeomanのgeneratorモジュールです。"client side webapp prototyping"と説明には書きましたが……
具体的にこのgeneratorを使ってscaffoldingすると、
- ローカルサーバ + LiveReload + ファイル監視
- JavaScript, Jade, Stylus, Less, CoffeeScriptで開発できる
- bower入り
という環境が生成されます。
$ grunt develop
でローカルサーバ(grunt-contrib-connect)を起動、LiveReload(grunt-contrib-connect)もonにして、ファイル監視(grunt-este-watch)しながら、
js/, jade/, stylus/, less/, coffee/の各ディレクトリにそれぞれのファイルを書いていくと、ローカルサーバのルートであるpublic/にコピーされたりコンパイルされたファイルが配置されるという流れです。
CoffeeScriptはSourceMapも一緒に出力されるので、デバッグも安心(?)。
ファイル監視にgrunt-este-watchを使用しているので、grunt-contrib-watchと違って監視後にファイルを生成しても、生成されたファイルを見てくれます。
とはいえgrunt-este-watchも若干癖があるのですが。
Sassにはまだ対応してませんが、そのうち対応したいなーとは思っています。
なので、ちょっとした実験コードや、HTML5のAPIの挙動とか、ちょっとしたものをささっと書くには良いgeneartorかなあと思います。
generator-flowtime
npm / github
このモジュールは、Yeomanのgeneratorモジュールです。flowtime.jsを使ったスライドがすぐに作れます。
generator-prototypingをベースにしている(でもJade, Stylus, CoffeeScriptのサポートしかしていない)ので、LiveReloadとか、grunt-este-watchでのファイル監視も健在です。
……とまあ、作ったのはよいのですが、周囲の人たちがreveal.jsを使ったスライドを多く作っていてreveal.jsがかなり気になっていることと、Jadeでもスライドを書くのが辛くてMarkdownがいいなあと思い始めているところで、これからこのgeneratorはどうしようかなというところです。
自分があまり使わないから、という理由でdeprecateにはしたくないのでのろのろメンテしていこうかなと思います。