Shoichi Matsuda's diary

このブログは移転しました。 https://shoma2da.net/ が新しいブログです。

gruntを使ってnodeのnpm testを自動化する

誰向け

nodeを使っている人向けです。

何がしたいのか

nodeプロジェクト内のjsファイルが更新される度にnpm testを自動で実行したいです。

方法(手順)

gruntを使います。

以降の作業は全てプロジェクトのルートで進めます。 --save-devは開発時に必要なモジュールである、という意味です。package.jsondevDependenciesの部分に追加されるはずです。

まずはgrunt-cliをインストールします。gruntのCUIインタフェースです。

$ npm install grunt-cli --save-dev

次にgrunt本体をインストールします。

$ npm install grunt --save-dev

Nodeクックブック

Nodeクックブック

gruntの核となるパッケージは導入したのでここからは必要なプラグインをインストールしていきます。 今回はファイル変更によるnpm testの実行をおこないたいのでgrunt-contrib-watchgrunt-shellをインストールします。

$ npm install grunt-contrib-watch --save-dev
$ npm install grunt-shell  --save-dev

いよいよ具体的な設定を書いていきます。設定ファイルはjavascriptcoffeescriptのどちらかが使えるようですが、今回はjavascriptを使います。

以下のような中身になるようにファイルを作成してください。

$ cat Gruntfile.js
module.exports = function(grunt) {
  //プラグインの読み込み
  grunt.loadNpmTasks('grunt-contrib-watch');
  grunt.loadNpmTasks('grunt-shell');

  //設定
  grunt.initConfig({
    shell: {
      test: {
        options: { stdout:true },
        command: function() { 
          return "npm test";
        }
      }
    },
    watch: {
      files: ['*.js'], //変更監視したいファイルのパスを書いてください
      tasks: ['shell']
    }
  });
}

最後にgruntコマンドを実行します。 今回、grunt-cliをグローバルインストールしなかったので以下のコマンドで監視を開始できます。

$ node_modules/grunt-cli/bin/grunt watch
Running "watch" task
Waiting...

ここまで設定作業は終了です。 あとは監視対象になっているファイルに変更がある度にnpm testが実行されるはずです。