grunt是个什么东西?

grunt就是为了解决重复劳动而生,对于需要反复重复的任务,例如压缩、编译、单元测试、代码检查等,自动化工具可以减轻你的劳动,简化你的工作。

为何使用 Grunt?

Grunt 有庞大的生态圈,并且每天都在增长。你可以自由地选择数以百计的插件,帮助你自动化地处理任务。

安装教程

1、nodeJs环境

因为grunt是基于nodeJs的,所以首先各位需要安装nodeJS环境,这个很简单就不说了,网上搜搜一大堆

2、安装grunt

有了nodeJs环境后,我们便可以开始搞grunt了,因为我们可能在任何目录下运行打包程序,所以我们需要安装CLI官方推荐在全局安装CLI(grunt的命令行接口)


npm install -g grunt-cli

这条命令将会把grunt命令植入系统路径,这样就能在任意目录运行他,原因是

每次运行grunt时,它都会使用node的require查找本地是否安装grunt,如果找到CLI便加载这个本地grunt库然后应用我们项目中的GruntFile配置,并执行任务

实例学习,就以打包zepto.js为例

一些东西说多了都是泪,直接先上实例吧,实例结束后再说其它的

首先在D盘新建一个项目(文件夹就好)在里面新增两个文件(不要问为什么,搞进去先)

① package.json


{
  "name": "demo",
  "file": "zepto",
  "version": "0.1.0",
  "description": "demo",
  "license": "MIT",
  "devDependencies": {
    "grunt": "~0.4.1",
    "grunt-contrib-jshint": "~0.6.3",
    "grunt-contrib-uglify": "~0.2.1",
    "grunt-contrib-requirejs": "~0.4.1",
    "grunt-contrib-copy": "~0.4.1",
    "grunt-contrib-clean": "~0.5.0",
    "grunt-strip": "~0.2.1"
  },
  "dependencies": {
    "express": "3.x"
  }
}

② Gruntfile.js


$ cd d:
$ cd grunt

完了我们需要在grunt目录下执行 npm install将相关的文件下载下来:

然后我们的目录就会多一点东西:

然后在Gruntfile中新增以下代码(先别管,增加再说)


module.exports = function (grunt) {
  // 项目配置
  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    uglify: {
      options: {
        banner: '/*! <%= pkg.file %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
      },
      build: {
        src: 'src/<%=pkg.file %>.js',
        dest: 'dest/<%= pkg.file %>.min.js'
      }
    }
  });
  // 加载提供"uglify"任务的插件
  grunt.loadNpmTasks('grunt-contrib-uglify');
  // 默认任务
  grunt.registerTask('default', ['uglify']);
}

然后运行 grunt命令后

嗯嗯,多了一个文件,并且是压缩的,不差!!!第一步结束, 是不是有点感觉了,这只是grunt功能之一压缩代码,后面我们会介绍grunt的其它功能