转:grunt简介

grunt 是一个开源的基于任务 (Task) 的前端构建框架。它除了有 Jake 的优点(跨平台、开发简单)以外,还有一套设计良好的 task 框架用来组织各种构建任务。grunt 内置了几个非常常见的构建任务:

  • concat - 组合各种文件
  •  lint - 用 JSHint 检查代码
  •  min - 用 UglifyJS 压缩代码
  •  qunit - 跑 QUnit 单元测试
  •  watch - 当源代码文件发生变化时自动执行任务

除此之外还可以通过 npm 来方便的获取几百个现成的 task,比如用 closure 而不是 UglifyJS 来压缩 js,或者用 less 来生成 css,又或者用 jslint 而不是 jshint 来检查语法等,这些任务都可以在 npm 上找到。如果这些任务无法满足你的需求,grunt 还允许你方便的添加自定任务,就像写 nodejs 代码一样简单。自定任务还可以发布到 npm 上,通过 npm 在多个项目中共享这些任务。[fenbi-grunt-tasks] 就是粉笔网自定的 js 模块合并、handlebars 模板预编译任务 ([grunt-tbf2e] 貌似是淘宝的自定任务)。

任务之间的组合也是 grunt 非常好用的一个特性,例如通过 watch 任务和 rsync 任务的结合,可以方便的实现当源码发生改变时,自动同步代码到服务器上。

每次 grunt 执行时,grunt 都会去读取当前目录下的 grunt.js (就像 make 命令去寻找 Makefile 那样),然后去读取其中的任务配置,例如源码目录等。grunt 最大的特点在于,配置文件中不包含任何的任务逻辑代码(OO 的开闭原则)。这一特性使得任务可以专心于“要做什么”而不是“要对什么做事情”,不再被特定的项目所绑架。

grunt 给我最大的感受是:原来天下有这么多码农都在为前端构建而奋斗!grunt 使得各个项目的构建脚本不再彼此孤立,使得打造整个公司的前端构建工具变的更加简单。

=====================

部分转自:http://lostjs.com/2012/12/08/grunt-the-best/

posted @ 2013-03-05 17:20  hotcho  阅读(422)  评论(0编辑  收藏  举报