今年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にはまだ対応してませんが、そのうち対応したいなーとは思っています。


なので、ちょっとした実験コードや、HTML5APIの挙動とか、ちょっとしたものをささっと書くには良い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にはしたくないのでのろのろメンテしていこうかなと思います。

終わりに

というわけで、今年はいくつかのモジュールをpublishしました。githubリポジトリ数が大幅に増えたり、スターをもらったり、Pull Requestをもらったり、npmのダウンロード数を見て一喜一憂したり……実りの多い11ヶ月だったかなと思います。
ただ、名前空間汚し申し訳ありませんというものもいくつかあったりするので、調子に乗ってあれこれpublishしすぎるのも良くないなあとは思いました。
この中でこれ便利そうというものがあれば、ぜひ使ってみていただけたらと思います。お役に立てれば幸いです。