Grunt - Concat多个JS文件并监视更改

时间:2015-01-08 12:50:22

标签: javascript node.js gruntjs

还是Grunt的新手,所以请记住你的答案。我正在尝试在Grunt中设置一个任务,将任何名为“{”的目录中的任何JS文件连接到一个名为custom-concat.js的文件中,但是在运行grunt watch(运行良好而没有错误)之后,当我尝试对我的“自定义”目录中的任何文件进行更改时(即,在我对“自定义”目录中的任何JS文件进行更改之后,控制台只是处于“等待......”)时,没有任何事情发生。显然我的concat任务有问题,但我似乎无法看到问题所在。任何人都可以看到问题出在哪里?完整的gruntfile如下:

module.exports = function(grunt) {

  // Project configuration.
  grunt.initConfig({
    //pkg: grunt.file.readJSON('package.json'),

    concat: {
      options: {
        separator: ';',
      },
      dist: {
        src: ['scripts/custom/**/*.js'],
        dest: 'scripts/custom-concat.js',
      },
    },

    uglify: {
      build: {
        src: 'scripts/custom-concat.js',
        dest: 'scripts/custom.min.js'
      }
    },

    less: {
      options: {
        paths: ["css"]
      },
      files: {
        "styles.css": "less/styles.less"
      }
    },

    watch: {
      scripts: {
          files: 'scripts/**/*.js',
          task: ['concat', 'uglify:build']
      },

      styles: {
          files: 'css/less/**.less',
          task: 'less'
      }
    }

  });

  grunt.loadNpmTasks('grunt-contrib-concat');
  grunt.loadNpmTasks('grunt-contrib-uglify');
  grunt.loadNpmTasks('grunt-contrib-watch');

  // Default task(s).
  grunt.registerTask('default', ['concat', 'uglify']);

};

1 个答案:

答案 0 :(得分:4)

据我所知,您的监视任务有三个小问题:

  1. watch的正确属性是 taskS 而不是任务
  2. 如果您想直接在开始时运行watch的任务,请使用选项{atBegin:true}
  3. 您的监视任务监视脚本文件夹。但是,此文件夹还将包含已仲裁和已升级的文件。所以这个任务将陷入无限循环。您可能应该只观看脚本/自定义文件夹
  4. 所以你的观察任务应该看起来像这样:

    watch: {
      scripts: {
          files: 'scripts/custom/**/*.js',
          tasks: ['concat', 'uglify:build'],
          options: {
              atBegin: true
          }
      },
    
      styles: ...
    }
    

    Github grunt-contrib-watch