node-git-releaseをio.js v1.1.0を要件にして、child_process.spawnSync()を使って書き直した。使い方をうまく考えつかなくて、あんまりきれいにならない。asyncパッケージを使った方がスッキリ見えるのは慣れの問題だろうか。とか下書きしていたらNode.js v0.12.0が出て、こちらでも*Sync()がサポートされ、動くようになったようだ(試してない)。

package.jsonでio.jsの特定バージョンを要件にしたい場合、enginesフィールドではiojsというキーで指定するようだ。npmの公式ドキュメントでは特に触れられていないが、Herokuでは既にこれを見て実装されているという話だった。

{
  "engines": {
    "iojs": ">=v1.1.0"
  }
}

当然ながら実行をブロックしてくれるわけではないので、気休め程度と言って良い。他、このenginesフィールドでio.js v1.1.0またはNode.js v0.12.0という要件にしたい場合の書き方がわからないという問題もあった。配列で書くしかないような気がするが、解釈できるのだろうか。色々想定されていなさそうなフィールドなので、Herokuで明示的にio.jsを使いたいという場合を除いて指定しない方が良さそうだ。


WindowsのGitがアレでアレなので、いまだnpm publishすることができない。一生無理そう。