GruntJs安装及使用入门(自定义grunt任务,合并压缩js、css)
一、Grunt.js简介(实现自动化)
1)简要说明:
1.GruntJs是基于node的javascript命令行工具,可以自动化构建、测试、生成文档的项目管理工具;
2.使用GruntJs可以自动化的管理子任务的运行;
3.很多开源JS项目都是使用它搭建。如jQuery、Qunit、CanJS等
2)使用原因:
1.合并js文件——为了明确模块分工,可能会将Javascript代码拆成很小很小的一个个js文件,为减少Http Request我们需要合并js文件
2.压缩js文件、css文件等,从而减小请求的文件。
3.源代码测试
4.将备注自动生成文档
二、GruntJs安装
1.安装node,npm(最新版本的node会自动安装npm)
2.安装命令行工具grunt-cli——npm install -g grunt-cli(-g 全局安装)
3.安装grunt及其插件——npm install --save -dev (安装完成后可以使用grunt -version查看版本)
4.若之前安装过旧版本的grunt可以使用npm unistall -g grunt-cli卸载
三、package.json文件说明
1)说明:package.json是项目配置文件,包括项目的依赖信息,以及作者、版本等信息
2)例子:
{
"name": "myProject",
"version": "0.1.0",
"author": "@wish",
"devDependencies": { //项目的依赖
"grunt": "~0.4.0",
"grunt-contrib-jshint": "~0.1.1", //校验,语法检查
"grunt-contrib-uglify": "~0.1.2", //压缩
"grunt-contrib-concat": "~0.1.1" //合并文件
}
}
四、利用grunt压缩JS文件/合并JS文件
1)在node安装路径下建立工程 testJsUglify
2)配置package.json文件,放置在工程的根目录
"name": "testJsUglify",
"version": "0.1.0",
"author" : "@wish",
"devDependencies": {
"grunt": "~0.4.0",
"grunt-contrib-jshint": "~0.1.1",
"grunt-contrib-uglify": "~0.1.2",
"grunt-contrib-concat": "~0.1.1"
}
}
3)安装工程的依赖插件(package.json中配置的信息)
命令行中进入工程根目录,执行命令:npm install
工程testJsUglify根目录中增加了node_modules目录,包含grunt、grunt-contrib-concat、grunt-contrib-jshint、grunt-contrib-uglify四个子目录
4)将需要压缩的js文件添加到工程,本例中在跟目录下建立assets文件夹添加文件test1.js和test2.js
/testJsUglify/assets/test1.js
/testJsUglify/assets/test2.js
5)创建grunt任务
创建Gruntfile.js文件,放置在根目录,内容如下:
module.exports = function(grunt) {
// 配置
grunt.initConfig({
pkg : grunt.file.readJSON('package.json'),
concat : { //合并文件
domop : {
src: ['assets/test1.js', 'assets/test2.js'], //源文件目录
dest: 'dest/result.js' //目标文件目录,自动创建dest目录
}
},
uglify : { //压缩文件
options : {
banner : '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
},
build : {
src : 'dest/result.js',
dest : 'dest/result.min.js'
}
}
});
// 载入concat和uglify插件,分别对于合并和压缩
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-uglify');
// 注册任务
grunt.registerTask('default', ['concat', 'uglify']);
};
6)执行grunt任务
工程根目录执行grunt命令,合并和压缩完成,在dest目录中即可看见result.js和result.min.js文件
五、使用grunt合并压缩CSS文件
说明:合并和压缩过程类似js文件,下面详细说明:
1)创建工程testGruntCSS
2)配置package.json文件,放置工程的根目录
{
"name":"testGruntCSS",
"version": "0.1.0",
"author" :"@wish",
"devDependencies":{
"grunt":"~0.4.0",
"grunt-contrib-concat":"~0.1.1",
"grunt-css":">0.0.0"
}
}
3)安装依赖插件 工程根目录执行 npm install
根目录中增加文件夹node_modules,子目录分别为grunt,grunt-contrib-concat和grunt-css文件夹
4)将需要合并和压缩的css文件添加到工程
/testGruntCSS/assets/css1.css
/tetGruntCSS/assets/css2.css
/tetGruntCSS/assets/css3.css
5)工程根目录下新建Gruntjs文件,内容如下:
module.exports = function(grunt){
grunt.initConfig(
{
pkg:grunt.file.readJSON('package.json'),
concat:{
css:{
src:['assets/*.css'],
dest:'dest/all.css',
}
},
cssmin: { css: { src: 'dest/asset/all.css', dest: 'dest/asset/all-min.css' } } });
// 载入concat和css插件
grunt.loadNpmTasks('grunt-contrib-concat');//用于合并
grunt.loadNpmTasks('grunt-css');//用于压缩
grunt.registerTask('default',['concat','cssmin']);//任务
6)执行grunt任务
进入工程根目录,执行grunt命令,合并压缩完毕
进入dest目录即可看见all.css文件和all.min.css文件
六、自定义Grunt任务
1)新建工程defineGrunt
2)工程根目录配置package.json文件
{ "name": "defineGrunt", "version": "0.1.0", "author": "@wish", "devDependencies": { "grunt": "~0.4.0" } }
3)安装依赖插件grunt
工程根目录输入 npm install
4) 自定义任务,根目录创建Gruntfile.js文件,内容如下:
module.exports = function(grunt){
grunt.registerTask('myGrunt','输出不同参数',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);
})
};
5)测试任务
1.进入工程目录,输入grunt myGrunt ,输出:任务myGrunt没有传参数;
2.进入工程目录,输入grunt myGrunt:argument1 ,输出:任务myGrunt有一个参数是argument1;
3.进入工程目录,输入grunt myGrunt:argument1:argument2 ,输出:任务myGrunt有两个参数,分别是argument1, argument2;
参考:http://home.cnblogs.com/u/snandy/
GruntJs安装及使用入门(自定义grunt任务,合并压缩js、css)的更多相关文章
- nodejs:grunt使用合并压缩的基本使用
一.模块化历史 1,nodejs出现:主要解决后端js规范 2,commonjs:这个组织出来一些服务器规范 3,后端规范commonjs应用升级到前端commonjs2:cmd规范(seajs)和完 ...
- 前端开发环境之GRUNT自动WATCH压缩JS文件与编译SASS文件环境下Ruby安装sass常见错误分析
前言: 1.sass编译为css文件,早先时刻写css,后来看了sass挺不错的,于是在新的项目中开始使用上了sass.(grunt需要ruby环境,所以需要先安装ruby,sass环境) ①安装ru ...
- 使用grunt合并压缩js、css文件
需要了解的知识: 1.nodejs的安装与命令行使用 2.nodejs安装应用 3.grunt的初步了解 本文已假定读者已经熟悉以上知识. 好,我们继续: 任务1:将src目录下的所有zepto及插件 ...
- 简单使用grunt、bower工具合并压缩js和css
前段时间因为项目中的报表写了一个Jquery插件,开源到github上,参考以往大神们写的插件的姿势,决定搞了像模像样一点.言归正传.前端工程师对这些工具:Node,bower,grunt,npm这些 ...
- 开箱即用 - Grunt合并和压缩 js,css 文件
js,css 文件合并与压缩 Grunt 是前端自动化构建工具,类似webpack. 它究竟有多强悍,请看它的 介绍. 这里只演示如何用它的皮毛功能:文件合并与压缩. 首先说下js,css 合并与压缩 ...
- grunt 合并压缩js和css文件(二)
具体node及文件配置请看: grunt 安装使用(一) 要压缩的文件 --src/ ajax.js assets.js touch.js zepto.js 目录结构: dist/ node_modu ...
- grunt 压缩js css html 合并等配置与操作详解
module.exports = function(grunt){ //1.引入 grunt.loadNpmTasks('grunt-contrib-cssmin'); grunt.loadNpmTa ...
- gulp入门-压缩js/css文件(windows)
类似于grunt,都是基于Node.js的前端构建工具.不过gulp压缩效率更高. 工具/原料 nodejs/npm 方法/步骤 首先要确保pc上装有node,然后在global环境和项目文件中都in ...
- grunt自定义任务——合并压缩css和js
npm文档:www.npmjs.com grunt基础教程:http://www.gruntjs.net/docs/getting-started/ http://www.w3cplus.com/to ...
随机推荐
- 动态代理 Proxy InvocationHandler
前奏 代理模式 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息.过滤消息.把消息转发给委托类,以及事后处理消息等. 代理类与委托类之间通常 ...
- Bridge 桥梁模式 桥接模式
简介 将[抽象部分](Abstraction,人)与[实现部分](Implementor,人穿的衣服)分离,使它们都可以独立的变化. [业务抽象角色]引用[业务实现角色],或者说[业务抽象角色]的部分 ...
- js的new操作符
1.创建一个空对象,并且 this 变量引用该对象,同时还继承了该函数的原型. 2.属性和方法被加入到 this 引用的对象中. 3.新创建的对象由 this 所引用,并且最后隐式的返回 this . ...
- 关于php读mysql数据库时出现乱码的解决方法
关于php读mysql数据库时出现乱码的解决方法 php读mysql时,有以下几个地方涉及到了字符集. 1.建立数据库表时指定数据库表的字符集.例如 create table tablename ( ...
- css控制文字长度,超出长度显示...
css控制文字长度,超出长度显示... .style { max-width: 165px; overflow: hidden; white-space: nowrap; text-overflow: ...
- Android模拟器访问本地的localhost失败及解决方案
在开发手机网站是,使用Android模拟器测试,在手机浏览器中输入localhost访问本地服务器失败! 原因: 在Android系统中localhost就是127.0.0.1 在Windows系统中 ...
- Activity之间的数据传递(Arraylist)
1.使用Serialiable方法 实现序列化 2.使用Parcelable方法(这是android自己封装的类) Parcel类是封装数据的容器,封装后的数据通过Intent和IPC传递 实 ...
- YesFInder - Web File Manager 网页文件管理系统
开发原由: 原来想找一下实现可视化图片上传程序,先找了ckfinder,发现居然是收费的,而且用起来也不顺手,于是想能不能自己写一个.想到这就立即动手,花2天时间完成初步功能,然后再花了3天完善.目前 ...
- 初涉JavaScript模式系列 阶段总结及规划
总结 不知不觉写初涉JavaScript模式系列已经半个月了,没想到把一个个小点进行放大,竟然可以发现这么多东西. 期间生怕对JS的理解不到位而误导各位,读了很多书(个人感觉JS是最难的oo语言),也 ...
- 78 Subsets(求子集Medium)
题目意思:求解一个数组的所有子集,子集内的元素增序排列eg:[1,3,2] result:[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]思路:这是一个递推的过程 [] ...