Grunt——自动化任务处理工具框架

学习文章,详细原文链接:http://yujiangshui.com/grunt-basic-tutorial/

1.  grunt是一个JavaScript任务运行器,自动化任务处理工具,是一个工具框架。

2.  grunt基于node.js,用js开发。

3.  安装grunt

  (1)安装Node.js  

  (2)npm install -g grunt-cil   (注意:安装的并不是Grunt,而是Grunt-cil,即命令行的Grunt,这样可以使用Grunt命令来执行某个项目中的Gruntfile.js中定义的task。Grunt-cil只是一个命令行工具,用来执行,而不是Grunt工具本 身。)

  (3)生成package.json文件:在项目根目录下运行npm init。

  (4)安装grunt到当前项目:

    项目根目录下运行:npm install grunt --save-dev(表示把安装的东西添加到package.),这样,当前项目就依赖grunt,如果安装时没有添加--save-dev参数,需要自行添加信息到package.json。

4.  安装grunt插件:

  npm install --save-dev grunt-contrib-concat grunt-contrib-jshint..........

  安装后项目中的node_modules文件下会出现相应的插件文件夹。注意:项目中的node_modules文件夹不需要上传,因为package.json文件记录了项目中依赖的插件信息。下载后,在项目文件夹下面输入命令 npm install,NPM会自动读取package.json,将grunt和有关的插件下载。

5.  配置Gruntfile.js文件

1 module.exports=function(grunt){
2     .......
3    (1)任务配置代码
4    (2)插件加载代码
5    (3)任务注册代码
6 };

  用grunt来注册的一个task从而根据任务配置代码调用需要的插件来执行相应的操作。

6.  具体实例学习详见原文作者github项目。(感激作者)

7.  实例:

  (1)一般模板

  

 1 module.exports=function(grunt){
 2
 3 //任务配置代码:以对象的格式放在grunt.initConfig函数里面
 4 grunt.initConfig({
 5     pkg:grunt.file.readJSON(‘package.json‘),//读取package.json文件,并把里面的信息获取出来
 6     uglify:{//在Uglift插件下面,有一个buile任务,内容是把xx.js压缩输出到xx.min.js里面
 7         options:{
 8             banner:‘/*!<%=pkg.name%><%=grunt.template.today("yyyy-mm-dd")%>*/\n‘
 9         },
10         build:{
11             src:‘src/<%=pkg.name%>.js‘,
12             dest:‘build/<%=pkg.name%>.min.js‘
13         }
14     }
15 });
16
17
18 //插件加载代码
19 grunt.loadNpmTasks(‘grunt-contrib-uglifg‘);
20
21 //任务注册代码:zai default上满注册了一个Uglify任务,default就是别名,
22 //默认的task,当我们在项目目录中执行grunt命令的时候,它会执行注册到default上面的任务。
23 grunt.registerTask(‘default‘,[‘uglify‘]);
24
25
26 /*eg:注册其他的task
27     grunt.registerTask(‘compress‘,[‘uglify:bulid‘]);
28
29     需要输入grunt compress 命令来执行这条task,而这条task任务是uglify下面的build任务,
30     也就是说只会执行uglify里面的bulid定义的任务,而不会执行uglify里面定义的其他任务。
31 */
32
33
34
35 /*需要注意的是:
36     task的命名不能与后面的任务配置同名,也就是说这里的comperss不能命名为uglify,这样会报错或是产生意外情况。
37 */
38
39
40 };

  (2)作者实例

 1 module.exports = function(grunt) {
 2
 3   var sassStyle = ‘expanded‘;
 4
 5   grunt.initConfig({
 6     pkg: grunt.file.readJSON(‘package.json‘),
 7     sass: {
 8         output:{
 9             options:{
10                 style:sassStyle
11             },
12             files:{
13                 ‘./style.css‘:‘./scss/style.scss‘/*将 ./scss/style.scss这个文件以sassStyl变量存储的方式编译成根目录下面的style.css*/
14             }
15         }
16     },
17
18     concat:{
19         options:{
20             // separator:‘;‘,/*该参数本来是为了防止两个文件之间相互干扰设置的,结果无法被jshint验证通过,可以*/
21         },
22         dist:{
23             src:[‘./src/plugin.js‘,‘./src/plugin2.js‘],
24             dest:‘./global.js‘,
25         },
26     },
27
28     uglify:{
29         compressjs:{
30             files:{
31                 ‘./global.min.js‘:[‘./global.js‘]
32             }
33         }
34     },
35
36     jshint:{
37         all:[‘./global.js‘]
38     },
39     watch:{
40         script:{
41             files:[‘./src/plugin.js‘,‘/src/plugin2.js‘],
42             tasks:[‘concat‘,‘jshint‘,‘uglity‘]
43         },
44         sass:{
45             files:[‘./scss/style.scss‘],
46             tasks:[‘concat‘,‘jshint‘,‘uglify‘]
47         },
48         liverload:{
49             options:{
50                 liverload:‘<%=concat.options.liverload%>‘
51             },
52             files:[
53                 ‘index.html‘,
54                 ‘style.css‘,
55                 ‘js/global.min.js‘
56             ]
57         }
58     },
59     connect:{
60         options:{
61             port:9000,
62             open:true,
63             liverload:35729,
64             hostname:‘localhost‘
65         },
66         srver:{
67             options:{
68                 port:9001,
69                 base:‘./‘
70             }
71         }
72     }
73
74   });
75
76   grunt.loadNpmTasks(‘grunt-contrib-sass‘);
77   grunt.loadNpmTasks(‘grunt-contrib-concat‘);
78   grunt.loadNpmTasks(‘grunt-contrib-jshint‘);
79   grunt.loadNpmTasks(‘grunt-contrib-uglify‘);
80   grunt.loadNpmTasks(‘grunt-contrib-watch‘);
81   grunt.loadNpmTasks(‘grunt-contrib-concat‘);
82
83   grunt.registerTask(‘outputcss‘,[‘sass‘]);
84   grunt.registerTask(‘concatjs‘,[‘concat‘]);
85   grunt.registerTask(‘compressjs‘,[‘concat‘,‘jshint‘,‘uglify‘]);
86   grunt.registerTask(‘watchit‘,[‘sass‘,‘concat‘,‘jshint‘,‘uglify‘,‘connect‘,‘watch‘]);
87   grunt.registerTask(‘default‘);
88
89 };

注意:以上例子在本地运行时,因为本地环境问题,有部分功能不能实现,希望在后面继续深入了解。

时间: 2024-10-24 17:36:49

Grunt——自动化任务处理工具框架的相关文章

grunt自动化构建工具

一.什么是grunt? 是基于nodejs的项目构建工具,grunt和grunt插件是通过npm安装并管理的,npm是node.js的包管理器 二.为什么要用grunt? 自动化.对于反复重复的任务,例如压缩.编译.单元测试等,自动化工具可以减轻你的劳动,简化你的工作 三.如何使用? 1.首先安装nodejs,安装包及源码下载地址:https://nodejs.org/en/download/. 2.安装grunt,需要先将grunt命令行(CLI)安装到全局环境中, npm install -

JavaScript自动化构建工具入门----grunt、gulp、webpack

蛮荒时代的程序员: 做项目的时候,会有大量的js 大量的css   需要合并压缩,大量时间需要用到合并压缩 在前端开发中会出现很多重复性无意义的劳动 自动化时代的程序员: 希望一切都可以自动完成 安装 常用插件.压缩插件.合并插件等.  用插件实现 功能无限扩展 简单介绍三种工具 grunt 是js任务管理工具(自动化构建工具)    -- Grunt官网 戳这里 优势:出来早 社区成熟  插件全 缺点:配置复杂   效率低 (cpu占用率高) -------------------------

前端开发自动化工作流工具:JavaScript自动化构建工具grunt、gulp、webpack介绍

前端开发自动化工作流工具,JavaScript自动化构建工具grunt.gulp.webpack介绍 前端自动化,这样的一个名词听起来非常的有吸引力,向往力.当今时代,前端工程师需要维护的代码变得及为庞大和复杂,代码维护.打包.发布等流程也变得极为繁琐,同时浪费的时间和精力也越来越多,当然人为的错误也随着流程的增加而增加了更多的出错率.致使每一个团队都希望有一种工具,能帮助整个团队在开发中能精简流程.提高效率.减少错误率.随之讨论自动化部署也越来越多,并且国内很多大型团队也都有自己成熟的自动化部

应用Grunt自动化地优化你的项目前端

在不久前我曾写了一篇 应用r.js来优化你的前端 的文章,为大家介绍了r.js这个实用工具,它可以很好地压缩.合并前端文件并打包整个项目.但是如果将r.js放到项目中,我们不得不顾及到一个问题——项目每维护一次,就需要维护的人员输入一次rjs运行口令重新打包项目,自然是非常繁琐的事情.另外如果我们的项目用sass来写样式,可能还得外开一个koala.如果我们能让项目自己处理自己的所有事宜,那一切就美好多了. 针对上述问题,今天我们就利用更为大众的工具——Grunt,来自动化地处理前端事务(其实r

某互联网后台自动化组合测试框架RF+Sikuli+Python脚本

某互联网后台自动化组合测试框架RF+Sikuli+Python脚本 http://www.jianshu.com/p/b3e204c8651a 字数949 阅读323 评论1 喜欢0 一.**RobotFramework 1.**工具介绍:Robotframework在测试中作为组织测试用例和BDD关键字的平台,主要使用RIDE进行管理,它不是一个工具,而仅仅是一个框架,使用Python进行开发,同时支持WEB测试(Selenium).Java GUI 测试,启动线程.终端.SSH等.支持BDD

前端自动化构建工具——gulp

gulp是基于流的前端自动化构建工具. 一.环境配置 gulp是基于nodejs的,所以没有 nodejs 环境的要先去安装好 然后给系统配上gulp环境 npm install -g gulp 再到某一工程目录下 跟grunt一般,也是需要package.json包依赖文件和一个入口文件 gulpfile.js(其他名字识别不了) 然后就类似的先装上gulp npm install gulp --save-dev 最基本的使用方式是这样:(使用jshint插件校验js代码) var jshin

XSS漏洞自动化攻击工具XSSer

XSS漏洞自动化攻击工具XSSer XSS是Web应用常见的漏洞.利用该漏洞,安全人员在网站注入恶意脚本,控制用户浏览器,并发起其他渗透操作.XSSer是Kali Linux提供的一款自动化XSS攻击框架.该工具可以同时探测多个网址.如果发现XSS漏洞,可以生成报告,并直接进行利用,如建立反向连接.为了提供攻击效率,该工具支持各种规避措施,如判断XSS过滤器.规避特定的防火墙.编码规避.同时,该工具提供丰富的选项,供用户自定义攻击,如指定攻击载荷.设置漏洞利用代码等.

自动化升级工具之总体介绍

自动化升级工具主要是针对日常[开发环境]到[测试环境]再到[上线生产环境]的繁锁的操作,而研究的一款工具,他简化了开发人员在一次性部署好相关数据库服务.windows服务.站点服务后,再每一次版本升级时,所带来的一些固定而又机械的操作,希望此工具可以给一部分朋友来带来工作上的便捷,备注本版本工具只针对Windows环境. 准备条件: 第一.升级一台ftp服务器,用于上传相关升级包: 第二.服务器端[YBFLocalController]的服务,用于用于自动.备份.重启其他相关服务,在服务端配置好

前端自动化构建工具Webpack开发模式入门指南

Webpack Webpack是时下最流行的模块打包器 它的主要任务就是将各种格式的JavaScript代码,甚至是静态文件 进行分析.压缩.合并.打包,最后生成浏览器支持的代码 特点: 代码拆分方案:webpack可以将应用代码拆分成多个块,每个块包含一个或多个模块,块可以按需异步加载,极大提升大规模单页应用的初始加载速度 智能的静态分析:webpack的智能解析器几乎可以处理任何第三方库 Loader加载器:webpack只能处理原生js模块,但是loader可以将各种资源转换为js模块 p