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フィールドのことがよくわかっていないのでまだやっていない。設定を増やすと解決できるが、それはしたくない。まずはprivateとpublishConfigがない場合だけnpm publishも走らせるようにすれば良いのかもしれない。
簡単にやりたい場合はBashでnpmやgitをフックしてnpm testを差し込むだけでも良い。しかしそれだと実行する時にnpm関連のプロジェクトかどうかで使い分ける必要があり、感覚的に面倒だった。それをラップして良しなに振り分けるにはBash力が0に近すぎて無理だった。
Bash力を上げたい……とはまったく思わなくて不思議だ。BashスクリプトはVimスクリプトと同じくらい書きたくない。