Grunt使用

2014/07/22

Getting started

安装命令行工具

sudo npm install -g grunt-cli

Grunt:任务自动管理工具
关于Grunt,从一个简单的配置开始!
Grunt让Nodejs规范起来

一个几乎是Gruntfile.js通用的写法:

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

示例:

module.exports = function(grunt) {

  // 配置Grunt各种模块的参数
  grunt.initConfig({
    jshint: { /* jshint的参数 */ },
    concat: { /* concat的参数 */ },
    uglify: { /* uglify的参数 */ },
    watch:  { /* watch的参数 */ }
  });

  // 从node_modules目录加载模块文件
  grunt.loadNpmTasks('grunt-contrib-jshint');
  grunt.loadNpmTasks('grunt-contrib-concat');
  grunt.loadNpmTasks('grunt-contrib-uglify');
  grunt.loadNpmTasks('grunt-contrib-watch');

  // 每行registerTask定义一个任务
  grunt.registerTask('default', ['jshint', 'concat', 'uglify']);
  grunt.registerTask('check', ['jshint']);

};

你需要使用几个模块,就要写几条grunt.loadNpmTasks语句,将各个模块一一加载。

如果加载模块很多,这部分会非常冗长。而且,还存在一个问题,就是凡是在这里加载的模块,也同时出现在package.json文件中。如果使用npm命令卸载模块以后,模块会自动从package.json文件中消失,但是必须手动从Gruntfile.js文件中清除,这样很不方便,一旦忘记,还会出现运行错误。这里有一个解决办法,就是安装load-grunt-tasks模块,然后在Gruntfile.js文件中,用下面的语句替代所有的grunt.loadNpmTasks语句。

require('load-grunt-tasks')(grunt);

这条语句的作用是自动分析package.json文件,自动加载所找到的grunt模块。

require('time-grunt')(grunt);

在命令行中显示执行grunt任务所花的时间

常用模块