2018/02/06 追記
以下の記事にpublish時の挙動について詳しくまとまっています。適宜参照するとよいです。
npm prepublish の現状と今後どう変わっていくかを、表にしてまとめた - Qiita
install時にprepublishに書いたbuildが走るのが嫌で、publishのみ実行されるprepublishOnlyを使っていました。
しかし、これは大きな間違いです。
npmの開発者の一人であるiarnaのコメントを抜粋します。
"I want to do build steps that are neccessary to use my module." — use prepare
"I want to do validation steps that stop me from publishing bad code." — use prepublishOnly
prepublishOnlyはアップデートのためのtarbal生成後に実行されるので、意味がありません。
prepare
を使うようにしましょう。
また、npm5からは、prepublishの挙動は、prepublishOnlyと同じになるので注意が必要です。