前端构建工具 Grunt 入门
之前也介绍过前端构建工具 Ant 和 Yeoman,其中 Yeoman 工具就包含了 Grunt 所以就不多说。那么与 Ant 相比 Grunt 有这么几个优点:
- Javascript 语法,相比 Ant 的 XML 写起来更简洁更顺手;
- 任务模块资源丰富,如代码合并、压缩、检测、JSDoc、单元测试等你能想到的都可以找到;
- 文档丰富,从入门使用,到高级定制,都有相应的使用说明;
- 上手容易,Grunt 以及 Grunt 的任务模块都是通过 npm 进行安装和管理,配置简单。
一、安装 Grunt CLI
grunt-cli 类似一个 grunt 的管理器,可以管理本地环境中的多个 grunt
npm install -g grunt-cli
二、配置本地 Grunt
进入目标文件夹执行:
npm install grunt --save-dev
三、安装任务模块
执行 Grunt 任务时会用到各种任务模块,如果本地没有需要手动下载,例如 uglify 模块:
npm install grunt-contrib-uglify -save-dev
执行后 npm 就会将 uglify 下载到在当前目录。
四、建立一个 Grunt 项目
在 Grunt 项目中我们只用管理两个文件: Gruntfile.js 和 package.js(注意大小写)
先来看下 package.js,它是一个配置文件,可以定义一些常量供任务调用,另外当任务模块较多时手动安装就比较麻烦,这时也可以通过配置 package.js 来统一安装,下面是一个 package.js 的例子,你也可以通过 npm install 命令来生成一个 package.js 文件:
{
"name": "grunt-test",
"version": "0.1.0",
"devDependencies": {
"grunt": "~0.4.1",
"grunt-cmd-concat": "~0.2.0",
"grunt-contrib-concat": "~0.3.0",
"grunt-contrib-uglify": "~0.2.2",
"grunt-contrib-clean": "~0.4.0"
}
}
项目所在目录,键入如下命令,npm 会根据 package.js 文件中 devDependencies 的配置,将 grunt 及所需的模块下载到当前目录中。
npm install grunt --save-dev
再来看下 Gruntfile.js ,它可以说是 Grunt 的核心,建立哪些任务,如何执行都是由 Gruntfile.js 来定义:
module.exports = function(grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json');
});
};
上面是 Gruntfile.js 的通用写法,可以看到它读取了我们之前定义的 package.js,那么在任务里就可以通过pkg.name的形式读取键值。
接下来看一个完整的 uglify 任务例子:
module.exports = function(grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
uglify: {
build: {
src: 'src/test.js', // 原代码
dest: 'build/test-min.js' // 压缩后的代码
}
}
});
// 引入任务模块
grunt.loadNpmTasks('grunt-contrib-uglify');
// 定义任务
grunt.registerTask('test', ['uglify']);
};
例子很简单也有注释就不多解释,最后键入grunt test就会执行 uglify 的压缩任务。
当然在实际工作中我们会需要执行多个任务,例如合并代码,添加一个任务也非常简单:
module.exports = function(grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
uglify: {
build: {
src: 'src/test.js',
dest: 'build/test-min.js'
}
},
concat:{ // 合并任务
src: ['src/test.js','scr/test2.js'],
dest: 'build/test-all.js'
}
});
// 引入任务模块
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-concat'); // 添加合并任务所需模块
// 定义任务
grunt.registerTask('test', ['uglify'],['concat']); // 添加合并任务
};
依然是执行grunt test命令就 OK 了。
到这里 Grunt 的基本配置和使用就介绍完了,后面还会整理介绍一些进阶的使用技巧。
前端构建工具 Grunt 入门的更多相关文章
- (转)前端构建工具gulp入门教程
前端构建工具gulp入门教程 老婆婆 1.8k 2013年12月30日 发布 推荐 10 推荐 收藏 83 收藏,20k 浏览 本文假设你之前没有用过任何任务脚本(task runner)和命令行工具 ...
- 前端构建工具gulp入门教程(share)
参考自:http://segmentfault.com/a/1190000000372547 资源: npm上得gulp组件 gulp的Github主页 官方package.json文档 gulp中文 ...
- 前端构建工具gulp入门
本文假设你之前没有用过任何任务脚本(task runner)和命令行工具,一步步教你上手Gulp.不要怕,它其实很简单,我会分为五步向你介绍gulp并帮助你完成一些惊人的事情.那就直接开始吧. 第一步 ...
- 前端构建工具grunt
简单配置grunt 配置gulp还是grunt都是在node的环境下安装的,所以在这之前保证你的node环境已经安装好了! -------------------------------------- ...
- 前端构建工具gulp入门教程
本文假设你之前没有用过任何任务脚本(task runner)和命令行工具,一步步教你上手Gulp.不要怕,它其实很简单,我会分为五步向你介绍gulp并帮助你完成一些惊人的事情.那就直接开始吧. 第一步 ...
- 前端项目构建工具---Grunt
什么是Grunt? grunt是javascript项目构建工具,在grunt流行之前,前端项目的构建打包大多数使用ant.(ant具体使用 可以google),但ant对于前端而言,存在不友好,执行 ...
- Gulp.js----比Grunt更易用的前端构建工具
Gulp.js----比Grunt更易用的前端构建工具 Grunt一直是前端构建工具,然而他也不是毫无缺陷的,gulp的作者 Eric Schoffstall 在他介绍 gulp.js 的 prese ...
- 前端构建工具之gulp的安装和配置
在选择构建工具时,看到更多人推荐gulp,从此入了gulp的坑- 一.安装node环境 百度谷歌一下就有了,在终端中分别输入 node -v 和 npm -v,若显示node和npm的版本号则说明no ...
- 前端开发自动化工作流工具,JavaScript自动化构建工具grunt、gulp、webpack介绍
前端开发自动化工作流工具,JavaScript自动化构建工具grunt.gulp.webpack介绍 前端自动化,这样的一个名词听起来非常的有吸引力,向往力.当今时代,前端工程师需要维护的代码变得及为 ...
随机推荐
- POI官网中的例子
官方指南中的例子: http://poi.apache.org/spreadsheet/quick-guide.html#New+Sheet 这一节 Workbook wb = new HSSFWor ...
- Bungee Jumping---hdu1155(物理题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1155 题目很长,但是很容易理解,就是人从高s的桥上跳下来,手拉着长为l的绳子末端,如果绳子太短那么人将 ...
- Python开发【整理笔记】
回顾笔记 学python半年,新知识不断填充,之前学的东西也忘的差不多,整理下笔记,把重点再加深下印象,算是读书拾遗吧.... 1.类继承.新式类.经典类 首先,新式类.经典类的概念只存在于Pytho ...
- SSH secure shell 权威指南(转载)
本书是一本介绍通信安全的书籍,如果你想保障你的通信安全,本书能给你一个很好的解决方案.本书从ssh协议介绍起,到具体的开源实现和商业实现.但本书同时介绍开源实现和商业实现,给人感觉比较乱.注意:由于o ...
- python模块之shutil高级文件操作
简介 shutil模块提供了大量的文件的高级操作.特别针对文件拷贝和删除,主要功能为目录和文件操作以及压缩操作.对单个文件的操作也可参见os模块. 注意即便是更高级别的文件复制函数(shutil.co ...
- HBase1.2.0增删改查Scala代码实现
增删改查工具类 class HbaseUtils { /** * 获取管理员对象 * * @param conf 对hbase client配置一些参数 * @return 返回hbase的HBase ...
- Selenium之IE浏览器的启动
1.下载IEDriverServer.exe文件放至需要的目录中: 2.编写代码 import org.openqa.selenium.WebDriver; import org.openqa.sel ...
- wordpress的安装及使用
1.如何查看别人的wordpress站点所有的模板 2.如何使用自定义的模板
- 003-maven安装(3.5.4版本)
说明:欲安装maven,必须先安装java的jdk. 1.下载地址. 链接:https://pan.baidu.com/s/1EKFBrgqShFZJ6Fccen82Jw 密码:ny15 2.直接解压 ...
- LCS 最长公共子子串
与 最长公共子序列类似 只是最长公共子串必须连续 所以只能走斜线!!!! ''' LCS 最长公共子序列 ''' def LCS_len(x, y): m = len(x) n = len(y) dp ...