首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与Grunt同时运行“监视”和“不”

与Grunt同时运行“监视”和“不”
EN

Stack Overflow用户
提问于 2014-01-31 11:46:21
回答 3查看 5.3K关注 0票数 6

我刚刚开始使用Grunt,并且希望每次修改文件(使用grunt-contrib-watch [GitHub页面])并运行grunt-nodemon [GitHub页面],同时使用grunt-concurrent [GitHub页面]来运行JavaScript。

据我所知(我显然不知道)我的Gruntfile应该:

  1. 默认情况下运行concurrent
  2. concurrent运行watch
  3. 每次修改文件时,watch都运行jshint

Gruntfile.js

代码语言:javascript
复制
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'
    ]);
};

注:我还没有加入grunt-nodemon

看起来concurrent正在运行watch,但当我修改文件时,jshint似乎没有运行。我肯定在终端中没有任何输出(我认为是logConcurrentOutput: true做的)。

这是我在终点站得到的输出:

代码语言:javascript
复制
Running "concurrent:dev" (concurrent) task
Running "watch" task
Waiting...    


Done, without errors.

我还希望在第一次运行jshint任务时(以及在修改文件时)运行default

有人能说明我哪里出了问题吗?

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-31 12:51:35

如果没有找到要“监视”的文件,则watch任务将退出;如本期所示。

为了方便地告诉watch查看与jshint任务相同的文件,我使用Grunt的模板引擎来引用与jshint任务相同的文件的Array

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

这是我的工作Gruntfile

代码语言:javascript
复制
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'
    ]);
};
票数 6
EN

Stack Overflow用户

发布于 2014-04-07 21:03:56

如果您正在运行一个Express服务器,那么您可以使用快车服务器。这些文档提供了一个很好的指南,说明如何在JSHINT和LiveReload + Watch/Regarde中使用它。

代码语言:javascript
复制
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' ]);
});
票数 1
EN

Stack Overflow用户

发布于 2014-01-31 13:46:56

乔纳森,你需要检查你的球状图案是否与任何文件相匹配。正如问题的链接所示,您可以尝试nonull选项。我还建议使用标志--debug运行咕噜声,这样您就可以看到更多在引擎盖下面发生的事情。

这是一个正常工作的Gruntfile启动节点服务器,监视变化和肝脏工作量。它使用咕噜-快车插件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21479322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档