3

私は開発とテストにcoffeescriptを使用するプロジェクトに取り組んでいます。mochaの--watchフラグをオンにしてノードでテストを実行し、変更を加えたときにテストを自動的に実行できるようにします。

これはある程度機能しますが、何かが保存されると、。/ test/test。*。coffeeファイルのみが再コンパイルされます。これは私のディレクトリ構造です:

/src/coffee
-- # Dev files go here
/test/
-- # Test files go here

mochaウォッチャーは/srcおよび/testディレクトリー内のファイルの変更に応答しますが、/ testディレクトリー内のファイルのみが再コンパイルされる限り、継続的テストは一種の中断です。ウォッチャープロセスを終了して再起動すると、ソースファイルも再コンパイルされます。実行ごとにテストファイル内の依存関係としてリストされている開発ファイルに対してコーヒーコンパイラを実行させるにはどうすればよいですか?

4

2 に答える 2

6

これがgrunt.jsを使った私の答えです

あなたはうなり声といくつかの追加のパッケージをインストールする必要があります。

npm install grunt grunt-contrib-coffee grunt-simple-mocha grunt-contrib-watch

そして、このgrunt.jsファイルを書きます:

module.exports = function(grunt) {

  grunt.loadNpmTasks('grunt-contrib-coffee');
  grunt.loadNpmTasks('grunt-simple-mocha');
  grunt.loadNpmTasks('grunt-contrib-watch');

  grunt.initConfig({
    coffee:{
      dev:{
        files:{
          'src/*.js':'src/coffee/*.coffee',
        }
      },
      test:{
        files:{          
          'test/test.*.js':'test/test.*.coffee'
        }
      }
    },
    simplemocha:{
      dev:{
        src:"test/test.js",
        options:{
          reporter: 'spec',
          slow: 200,
          timeout: 1000
        }
      }
    },
    watch:{
      all:{
        files:['src/coffee/*', 'test/*.coffee'],
        tasks:['buildDev', 'buildTest', 'test']
      }
    }
  });

  grunt.registerTask('test', 'simplemocha:dev');
  grunt.registerTask('buildDev', 'coffee:dev');
  grunt.registerTask('buildTest', 'coffee:test');
  grunt.registerTask('watch', ['buildDev', 'buildTest', 'test', 'watch:all']);

};

注:テストの作成/実行方法に関する詳細はありませんでしたので、必ず追加する必要があります;)

次に、gruntwatchタスクを実行します。

$>grunt watch
于 2012-12-03T12:57:16.910 に答える
3

Cakefile と小麦粉の使用:

flour = require 'flour'
cp    = require 'child_process'

task 'build', ->
    bundle 'src/coffee/*.coffee', 'lib/project.js'

task 'watch', ->
    invoke 'build'
    watch 'src/coffee/', -> invoke 'build'

task 'test', ->
    invoke 'watch'
    cp.spawn 'mocha --watch', [], {stdio: 'inherit'}

Mocha はすでにtest/フォルダーを監視しているため、監視するだけで済みますsrc/

于 2012-12-04T04:24:47.287 に答える