Grunt默认任务仅在列表中运行第一个任务

时间:2014-06-20 21:41:57

标签: gruntjs

我刚刚开始使用grunt,只是尝试让一些基本任务正常工作。 这是我的Gruntfile:

module.exports = function(grunt) {
  grunt.initConfig({
    compass: {
      dist: {
        options: {
          config: 'config.rb',
          watch: true
        }
      }
    },
    livecopy: {
      your_target: {
        options: {
          source: "C:/Websites/xxx/styles/screen.css",
          target: "W:/Websites/xxx/styles/screen.css"
        },
      },
    },
    watch: {
      assets: {
        files: ['**//*.css', '**/*.js'],
        options: {
          livereload: true,
        },
      },
    },

  });
  grunt.loadNpmTasks('grunt-contrib-compass');
  grunt.loadNpmTasks('grunt-contrib-watch');
  grunt.loadNpmTasks('grunt-livecopy');
  grunt.task.registerTask('default', ['compass','livecopy','watch']);
};

我可以单独运行这些任务,而不会出现任何问题。当我运行grunt默认任务时,只运行默认任务列表中的第一个任务。它们所处的顺序并不重要,只有第一个运行。

我错过了什么?

1 个答案:

答案 0 :(得分:0)

使用watch选项运行Compass时,它运行compass watch这是一项阻塞任务。来自grunt-contrib-compass docs

  

观看

     

类型:布尔值

     

运行罗盘手表而不是指南针编译。这将使用Compass'   native watch命令侦听Sass文件的更改并重新编译   你的CSS有关变化。虽然比运行指南针编译要快得多   每次你想编译你的Sass时,Compass就会变成一个阻塞   任务。这意味着如果您想与它一起使用它   另一个阻塞任务,如手表,你将需要使用它   与诸如grunt-concurrent之类的并行任务相结合。