使用GruntJS构建Web程序之Tasks(任务)篇


Posted in Javascript onJune 06, 2014

如何自定义Grunt任务

有时我们需要写一些自己的grunt任务,下面是一个具体例子

一、准备

1. 新建一个目录g1
2. 新建package.json,放入g1
3. 新建Gruntfile.js,放入g1

package.json

 
{
    "name": "g1",
    "version": "0.1.0",
    "author": "@snandy",
    "homepage": "http://www.g1.com",
    "devDependencies": {
        "grunt": "~0.4.0"
    }
}

4. cd进入g1,npm install安装grunt包

这整个目录结构如下

使用GruntJS构建Web程序之Tasks(任务)篇

Gruntfile.js暂时空着。

二、创建一个最简单的任务

grunt.registerTask(taskName, [description,] taskFunction)

taskName 任务名称,命令行里使用 grunt + taskName
description 任务的描述
taskFunction 任务的实现

Gruntfile.js里填入一下代码

 
module.exports = function(grunt) {
    grunt.registerTask('mytask', '一个最简单的任务演示,根据参数打印不同的输出.', function(arg1, arg2) {
        if (arguments.length === 0) {
            grunt.log.writeln('任务' + this.name + ", 没有传参数");
        } else if (arguments.length === 1) {
            grunt.log.writeln('任务' + this.name + ", 有一个参数是" + arg1);
        } else {
            grunt.log.writeln('任务' + this.name + ", 有两个参数分别是" + arg1 + ", " + arg2);
        }
    });
};

注册了一个任务“mytask”,实现一个最简单的根据所传参数不同实现不同的打印输出,看运行结果我们需要进入命令行。

进入到g1目录,输入 grunt mytask

使用GruntJS构建Web程序之Tasks(任务)篇

再输入 grunt mytask:snandy

使用GruntJS构建Web程序之Tasks(任务)篇

任务名后面加一个冒号就可以传参了

再输入 grunt mytask:snandy:backus

使用GruntJS构建Web程序之Tasks(任务)篇

冒号间隔可以传多个参数

三、一次创建多个任务

grunt.registerMultiTask(taskName, [description,] taskFunction)

可以看到参数是一样的,方法名不同。但使用方式却不太同,需要先初始化config,Gruntfile.js如下

 
module.exports = function(grunt) {
    grunt.initConfig({
        log: {
            t1: [1, 2, 3],
            t2: 'hello world',
            t3: false
        }
    });    grunt.registerMultiTask('log', 'Log stuff.', function() {
        grunt.log.writeln(this.target + ': ' + this.data);
    });
};

进入g1目录,分别测试下

输入 grunt,会依次执行三个子任务t1,t2,t3

使用GruntJS构建Web程序之Tasks(任务)篇

分别输入 grunt log:t1, grunt log:t2, grunt log:t3

使用GruntJS构建Web程序之Tasks(任务)篇

四、任务间通讯

在一个任务内部可以调用另外一个任务,如下

 
module.exports = function(grunt) {    grunt.registerTask('mytask', '一个最简单的任务演示,根据参数打印不同的输出.', function(arg1, arg2) {
        if (arguments.length === 0) {
            grunt.log.writeln('任务' + this.name + ", 没有传参数");
        } else if (arguments.length === 1) {
            grunt.log.writeln('任务' + this.name + ", 有一个参数是" + arg1);
        } else {
            grunt.log.writeln('任务' + this.name + ", 有两个参数分别是" + arg1 + ", " + arg2);
        }
    });
    grunt.registerTask('default', '默认的任务', function() {
        // 调用mytask
        grunt.task.run('mytask:param1:param2')
    })
};

进入命令行,输入grunt

使用GruntJS构建Web程序之Tasks(任务)篇

调用多个任务,以逗号分隔传给run方法即可,或者以数组形式

grunt.registerTask('default', '默认的任务', function() {
    grunt.task.run('mytask1', 'mytask2')
    // 或者
    grunt.task.run(['mytask1', 'mytask2'])   
})
Javascript 相关文章推荐
prototype 1.5相关知识及他人笔记
Dec 16 Javascript
JQuery优缺点分析说明
Apr 10 Javascript
Extjs EditorGridPanel中ComboBox列的显示问题
Jul 04 Javascript
jQuery中filter()和find()的区别深入了解
Sep 25 Javascript
jQuery截取指定长度字符串代码
Aug 21 Javascript
基于jquery的手风琴图片展示效果实现方法
Dec 16 Javascript
javascript实现复选框超过限制即弹出警告框的方法
Feb 25 Javascript
jQuery简单实现提交数据出现loading进度条的方法
Mar 29 Javascript
利用jQuery实现CheckBox全选/全不选/反选的简单代码
May 31 Javascript
AngularJS ng-change 指令的详解及简单实例
Jul 30 Javascript
浅谈layui分页控件field参数接收对象的问题
Sep 20 Javascript
vue-treeselect的基本用法以及解决点击无法出现拉下菜单
Apr 30 Vue.js
javascript中加号(+)操作符的一些神奇作用
Jun 06 #Javascript
使用GruntJS构建Web程序之合并压缩篇
Jun 06 #Javascript
Javascript动态引用CSS文件的2种方法介绍
Jun 06 #Javascript
jquery 隐藏与显示tr标签示例代码
Jun 06 #Javascript
Node.js中对通用模块的封装方法
Jun 06 #Javascript
JavaScript中对循环语句的优化技巧深入探讨
Jun 06 #Javascript
jquery修改网页背景颜色通过css方法实现
Jun 06 #Javascript
You might like
获得Google PR值的PHP代码
2007/01/28 PHP
phpmyadmin 3.4 空密码登录的实现方法
2010/05/29 PHP
9个PHP开发常用功能函数小结
2011/07/15 PHP
php中将数组存到文件里的实现代码
2012/01/19 PHP
php生成二维码
2015/08/10 PHP
PHP+MySQL统计该库中每个表的记录数并按递减顺序排列的方法
2016/02/15 PHP
php中mkdir()函数的权限问题分析
2016/09/24 PHP
PHP在线打包下载功能示例
2016/10/15 PHP
php传值方式和ajax的验证功能
2017/03/27 PHP
PHP实现的简单路由和类自动加载功能
2018/03/13 PHP
基于JQuery.timer插件实现一个计时器
2010/04/25 Javascript
写js时遇到的一些小问题
2010/12/06 Javascript
javascript返回顶部效果(自写代码)
2013/01/06 Javascript
jquery入门必备的基本认识及实例(整理)
2013/06/24 Javascript
JS实现简单的Canvas画图实例
2013/07/04 Javascript
js控制页面的全屏展示和退出全屏显示的方法
2015/03/10 Javascript
JavaScript 消息框效果【实现代码】
2016/04/27 Javascript
jquery模拟多级复选框效果的简单实例
2016/06/08 Javascript
详解JSON1:使用TSQL查询数据和更新JSON数据
2016/11/21 Javascript
基于jQuery制作小图标上下滑动特效
2017/01/18 Javascript
Angularjs根据json文件动态生成路由状态的实现方法
2017/04/17 Javascript
React中上传图片到七牛的示例代码
2017/10/10 Javascript
JS解析后台返回的JSON格式数据实例
2018/08/06 Javascript
在Layui中操作数据表格,给指定单元格添加事件示例
2019/10/26 Javascript
微信小程序实现星级评价
2019/11/20 Javascript
python TF-IDF算法实现文本关键词提取
2019/05/29 Python
Python pandas DataFrame操作的实现代码
2019/06/21 Python
Window10下python3.7 安装与卸载教程图解
2019/09/30 Python
使用HTML5加载音频和视频的实现代码
2020/11/30 HTML / CSS
SQL Server 2000数据库的文件有哪些,分别进行描述。
2015/11/09 面试题
结婚保证书范文
2014/04/29 职场文书
低碳环保标语
2014/06/12 职场文书
公司借条范本
2015/05/25 职场文书
独生子女证明范本
2015/06/19 职场文书
Python 键盘事件详解
2021/11/11 Python
Java服务调用RestTemplate与HttpClient的使用详解
2022/06/21 Java/Android