当我保存文件时,如何让gruntjs做concat,uglify和观察?

时间:2014-11-16 00:42:38

标签: gruntjs

我有一个gruntjs文件,它有一个registerTask('default',['concat','uglify','watch']); 如果我保存我的scss文件,它将更新我的css文件。但是如果我想让Grunt concat并uglify我的JS,我必须进入终端,退出监视,然后运行grunt命令。它真的很烦人。

当我保存任何JS和/或css文件时,有没有办法让grunt运行所有这些任务?无需每次都进入终端?如果有帮助的话,继承我的gruntfile。

module.exports = function(grunt) {
grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),

    compass: {
        dist: {
            options: {
                sassDir: 'sass',
                cssDir: 'css'
            }
        }
    },
    watch: {
        css: {
            files: '**/*.scss',
            tasks: ['compass']
        }
    },
    concat: {
          options: {
            separator: '\n\n'
          },
          dist: {
            src: ['js-game/*.js'],
            dest: 'js/<%= pkg.name %>.js'
          }

    },
    uglify:{
        options:{mangle:false},
        my_target:{
            files:{'js/<%= pkg.name %>.min.js' : ['js/<%= pkg.name %>.js']

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

}

非常感谢大家。

2 个答案:

答案 0 :(得分:0)

我想如果你添加:

scripts: {
  files: ['**/*.js'],
  tasks: ['jshint'],
}

它应该工作的监视任务,您可能需要:

scripts: {
files: ['**/*.js'],
tasks: ['jshint'],
options: {
    spawn: false,
  }
}

因此,在上面的Gruntfile.js中,它将类似于:

module.exports = function(grunt) {

grunt.initConfig({     pkg:grunt.file.readJSON(&#39; package.json&#39;),

compass: {
    dist: {
        options: {
            sassDir: 'sass',
            cssDir: 'css'
        }
    }
},
watch: {
    css: {
        files: '**/*.scss',
        tasks: ['compass']
    },
    scripts: {
      files: ['**/*.js'],
      tasks: ['jshint'],
      options: {
        spawn: false,
      }
    }
},
concat: {
      options: {
        separator: '\n\n'
      },
      dist: {
        src: ['js-game/*.js'],
        dest: 'js/<%= pkg.name %>.js'
      }

},
uglify:{
    options:{mangle:false},
    my_target:{
        files:{'js/<%= pkg.name %>.min.js' : ['js/<%= pkg.name %>.js']

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

应该有希望这样做。

答案 1 :(得分:0)

您可以添加多个要监视的任务。因此,如果您想在保存时进行连接和uglify,您可以这样做:

watch: { css: { files: '**/*.scss', tasks: ['compass'] }, scripts: { files: ['js-game/*.js'], tasks: ['concat', 'uglify'], options: { spawn: false, } } },

我希望这会有所帮助!