git-releaseへテストを走らせる機能を追加した。package.jsonが見つかり、かつテストが定義されている場合にnpm testを走らせるという自分の必要最小限のものだけにしておいた。冬になるとタイピングをミスってよくnpm test & git release patchとやってしまい、アーアーアーってなるのを予防したかった。

Gitと同じようにnpmでもいくつかnpm関連の情報を出力するだけのサブコマンドがある。prefixサブコマンドは一番近いpackage.jsonのあるディレクトリーかカレント・ディレクトリーが出力される。

$ npm prefix
C:/Users/Kyo/Projects/node-git-release

あとはそこにあるかもしれないpackage.jsonを読んで、scriptsフィールドのtestが存在すればnpm testを実行するだけだ。package.json読んで色々取得できるサブコマンドとかも欲しくなる。

テストが通れば、今までと同じようにバージョン番号を上げて、コミットし、タグをつけ、設定によってはプッシュする。

テストが通らない時にリリースできないというささやかな問題はあるが、僕の用途ではこれで十分そうだった。privateフィールドを見て、それに応じてnpm publishするまで自動化したいが、publishConfigフィールドのことがよくわかっていないのでまだやっていない。設定を増やすと解決できるが、それはしたくない。まずはprivatepublishConfigがない場合だけnpm publishも走らせるようにすれば良いのかもしれない。


簡単にやりたい場合はBashでnpmgitをフックしてnpm testを差し込むだけでも良い。しかしそれだと実行する時にnpm関連のプロジェクトかどうかで使い分ける必要があり、感覚的に面倒だった。それをラップして良しなに振り分けるにはBash力が0に近すぎて無理だった。

Bash力を上げたい……とはまったく思わなくて不思議だ。BashスクリプトはVimスクリプトと同じくらい書きたくない。