2014-01-31 49 views
5

我刚开始使用步兵和想运行grunt-contrib-watch[GitHub page]到每一个文件的修改时间皮棉我的JavaScript(与grunt-contrib-jshint[GitHub page])并运行grunt-nodemon[GitHub page]过,同时使用grunt-concurrent[GitHub page]同时运行`watch`&`nodemon`与咕噜

据我了解(我显然没有)我Gruntfile应:在默认情况下

  1. 运行concurrent
  2. concurrent运行watch
  3. watch运行的每个文件的修改时间jshint

Gruntfile.js

module.exports = function (grunt) { 
    grunt.initConfig({ 
     concurrent: { 
      dev: [ 
       'watch' 
      ], 
      options: { 
       logConcurrentOutput: true 
      } 
     }, 
     jshint: { 
      server: [ 
       '**/*.js', 
       '!node_modules/**/*.js' 
      ], 
      options: { 
       node: true 
      } 
     }, 
     watch: { 
      all: [ 
       '**/*/.js', 
       '!node_modules/**/*.js' 
      ], 
      tasks: [ 
       'jshint' 
      ] 
     } 
    }); 

    grunt.loadNpmTasks('grunt-concurrent'); 
    grunt.loadNpmTasks('grunt-contrib-jshint'); 
    grunt.loadNpmTasks('grunt-contrib-watch'); 

    grunt.registerTask('default', [ 
     'concurrent:dev'/*, 
     'jshint', 
     'watch'*/ 
    ]); 
}; 

    grunt.loadNpmTasks('grunt-concurrent'); 
    grunt.loadNpmTasks('grunt-contrib-jshint'); 
    grunt.loadNpmTasks('grunt-contrib-watch'); 

    grunt.registerTask('default', [ 
     'concurrent:dev' 
    ]); 
}; 

N.B.我还没有添加grunt-nodemon

看起来好像concurrent正在运行watch但是当我修改一个文件时出现jshint没有运行。我当然没有在终端上得到任何输出(我认为logConcurrentOutput: true这样做)。

这里是输出我在终点站下车:

Running "concurrent:dev" (concurrent) task 
Running "watch" task 
Waiting...  


Done, without errors. 

我也想运行jshint当我第一次运行default任务(以及当我修改文件)。

任何人都可以告诉我哪里出错了吗?

谢谢!

回答

5

watch任务退出,如果没有找到'watch'文件;根据this issue

要轻松告诉watch观看为jshint任务我用咕噜的模板引擎引用文件的相同Arrayjshint任务相同的文件。

然后,我将jshint添加到要运行的并发任务列表中,以便在最初运行时以及我修改文件(使用watch)时运行。

这是我的工作Gruntfile

module.exports = function (grunt) { 
    grunt.initConfig({ 
     concurrent: { 
      dev: [ 
       'jshint', 
       'watch' 
      ], 
      options: { 
       logConcurrentOutput: true 
      } 
     }, 
     jshint: { 
      server: [ 
       '**/*.js', 
       '!node_modules/**/*.js' 
      ], 
      options: { 
       node: true 
      } 
     }, 
     watch: { 
      files: '<%= jshint.server %>', 
      tasks: [ 
       'jshint' 
      ] 
     } 
    }); 

    grunt.loadNpmTasks('grunt-concurrent'); 
    grunt.loadNpmTasks('grunt-contrib-jshint'); 
    grunt.loadNpmTasks('grunt-contrib-watch'); 

    grunt.registerTask('default', [ 
     'concurrent' 
    ]); 
}; 
0

乔纳森,你需要检查你的文件名匹配模式确实匹配任何文件。由于问题的链接建议您可以尝试nonull选项。我还建议运行国旗--debug咕噜声,这样你就可以看到更多的发生了什么。

This is a working Gruntfile其中启动节点服务器,监视更改和livereloads。它使用grunt-express插件。

0

如果您正在运行Express服务器,则可以使用grunt-express-server。该文档对JSHINT和LiveReload + Watch/Regarde的使用有很好的指导。

grunt.initConfig({ 
    jshint: { 
     all: ['Gruntfile.js', 'public/javascripts/*.js', 'test/**/*.js'] 
    }, 
    watch: { 
     express: { 
     files: ['**/*.js', '**/*.ejs'], 
     tasks: ['jshint', 'express:dev'], 
     options: { 
      spawn: false 
     } 
     } 
    }, 
    express: { 
     dev: { 
     options: { 
      script: './app.js' 
     } 
     } 
    } 
    }); 

    grunt.loadNpmTasks('grunt-contrib-jshint'); 
    grunt.loadNpmTasks('grunt-express-server'); 
    grunt.loadNpmTasks('grunt-contrib-watch'); 

    // Default task(s). 
    grunt.registerTask('server', [ 'express:dev', 'watch' ]); 
});