gruntjs - 咕噜声 : watch command never runs when including other tasks in registerTask method

标签 gruntjs jekyll grunt-contrib-watch

我的 Gruntfile 出现了一些意外行为。我注册了一个如下所示的任务: grunt.registerTask('dev', ['jekyll:server', 'watch:jekyll']) 希望它能顺序启动一个 jekyll服务器,然后监视我的项目的特定文件更改(使用 grunt-contrib-watch 插件)。一旦检测到这些更改,它就会自动重新运行 jekyll:server

我遇到的问题是,当我运行 grunt dev 时,它将启动 Jekyll 服务器,但不会运行 watch 命令。但是,如果我从 grunt dev 中删除服务器任务,它将按预期运行 watch 命令。

下面是我的 Gruntfile 的内容。谁能帮我理解发生了什么?

module.exports = function(grunt) {

  // Project configuration.
  grunt.initConfig({

    jekyll: {
      server : {
        server: true,
        server_port: 4000,
        exclude: ['node_modules']
      },
      prod: {
        dest: './_site-release'
      }
    },

    watch: {
      jekyll: {
        files: ['_posts/**/*.md', '_layout/*.html', '_includes/*.html', 'index.html'],
        tasks: ['jekyll:server']
      }
    }
  });

  grunt.loadNpmTasks('grunt-jekyll');
  grunt.loadNpmTasks('grunt-contrib-watch');

  grunt.registerTask('default', 'jekyll:server');
  grunt.registerTask('dev', ['jekyll:server', 'watch:jekyll']);
  grunt.registerTask('release', 'jekyll:prod');
};

最佳答案

server 选项使任务阻塞,因为它是持久的。您可以使用任务 watch option或类似grunt-concurrent同时运行 jekyllwatch:

grunt.initConfig({
    concurrent: {
        target: {
            tasks: ['jekyll:server', 'watch'],
            options: {
                logConcurrentOutput: true
            }
        }
    }
});

grunt.loadNpmTasks('grunt-concurrent');
grunt.registerTask('default', ['concurrent:target']);

关于gruntjs - 咕噜声 : watch command never runs when including other tasks in registerTask method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17849018/

相关文章:

web-applications - 根据grunt任务设置Env变量

javascript - TypeScript AMD 到浏览器上的单个文件

css - Sass - 包含大量 css 文件的复杂文件夹结构

requirejs - 使用 require-js 和 grunt.js - 错误缺少 "name"、 "include"或“modules”选项

node.js - 运行 Grunt 时 path.resolve 的参数必须是字符串

Jekyll 帖子未生成

ruby - Maruku告诉你: what's wrong with me?

ruby-on-rails - 我如何在 Jekyll 中链接 if 语句?

javascript - 大多数 Grunt 任务都找不到

node.js - 配置 grunt watch 以使用 requirejs 对应用程序运行 Jasmine 测试