Grunt:当监视任务看到文件发生变化时,为什么concat和uglify不起作用?

时间:2015-09-02 21:38:53

标签: gruntjs grunt-contrib-uglify grunt-contrib-concat

当更改这些文件并观察更改时,Grunt不会concatuglify我的javascript文件。

如果我运行grunt concat,则js文件按预期连接。

如果我然后运行grunt uglify,文件将按预期进行修改。

然而,当我只是运行grunt时,监视任务开始,我更改了一个javascript文件,我得到了这个:

$ grunt
Running "watch" task
Waiting...
>> File "src/js/test.js" changed.
Running "uglify:my_target" (uglify) task
>> Destination dest/js/app.min.js not written because src files were empty.
>> No files created.

为什么我在运行单个命令时会工作,而在正在监视文件的更改时却没有?

这是我的咕噜文件:

module.exports = function(grunt) {

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

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

  uglify: {
    my_target: {
        files: {
          'dest/js/app.min.js': ['<%= concat.dist.dest %>']
        }
    }
  },


  compass: {                  // Task 
    dist: {                   // Target 
      options: {              // Target options 
        sassDir: 'scss',
        cssDir: 'css',
        environment: 'production'
      }
    },
    dev: {                    // Another target 
      options: {
        sassDir: 'scss',
        cssDir: 'css'
      }
    }
  }, 

  watch: {
    css: {
      files: '**/*.scss',
      tasks: ['compass']
    },

    js:  { 
      files: 'src/js/*.js', tasks: [ 'uglify' ] 
    },
  }
});

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

1 个答案:

答案 0 :(得分:0)

我通过更改watch部分来修复此问题。我还将my_target更改为build

我的整个grunt文件看起来像这样

module.exports = function(grunt) {

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

  concat: {
      options: {
        separator: "\n\n\n",
      },
      dist: {
        src: ['src/**/*.js'],
        dest: 'dest/js/app.js',
      },
    },

  uglify: {
    build: {
        files: {
          'dest/js/app.min.js': ['<%= concat.dist.dest %>']
        }
    }
  },


  compass: {                  // Task 
    dist: {                   // Target 
      options: {              // Target options 
        sassDir: 'scss',
        cssDir: 'css',
        environment: 'production'
      }
    },
    dev: {                    // Another target 
      options: {
        sassDir: 'scss',
        cssDir: 'css'
      }
    }
  }, 

  watch: {
    css: {
      files: '**/*.scss',
      tasks: ['compass']
    },

    scripts: {
        files: ['<%= concat.dist.dest %>'],
        tasks: ['concat', 'uglify:build'],
        options: {
          atBegin: true,
      }
    }
  }
});

grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-compass');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.registerTask('default',['watch', 'compass', 'concat', 'uglify']);

};