grunt前端构建工具使用教程
grunt能干些什么?
grunt其实是哆啦a梦的百宝袋,是工具集,拥有非常丰富的任务插件,可以实现各式各样的构建目标。
按任务目标大致可分为四类:
文件操作型:比如合并、压缩js和css文件等(包括)
预编译型:比如编译less、sass、coffeescript等
类库项目构建型:比如 angular、ember、backbone等(这种推荐使用yeoman)
工程质量保障型:比如jshint、jasmine、mocha等
除此之外还有像 watch (监听文件改变,自动触发构建)等功能。
使用工具:
node: http://www.nodejs.org
安装:
window:安装比较傻瓜式,就两步。
1 下载源文件 http://www.nodejs.org/download/ 选择对应的最新msi文件。
2 双击进行安装。
linux:
1 wget下载源文件
打开 http://www.nodejs.org/download/,寻找到自己要下载的文件地址
# wget 源文件路径
2 解压文件
# tar xvf 文件路径
3 进入解压目录
# cd node-v0.8.7
4 检查所需要配置
# ./configure
5 安装
# make install
6 检查是否成功安装,输入命令:
# node -v
配置:
npm node pakeage manage 包管理
国内的npm镜像配置
国内的npm安装由于某种原因总是比较慢,所以需要在做些配置了。
设置 npm 国内镜像
npm config set registry http://registry.cnpmjs.org
可选项:使用cjnpm
grunt:https://github.com/gruntjs/
安装:
grunt的安装需要先安装node才能继续安装。grunt也就是相当于node的一个模块。
1 npm install -g grunt-cli
里边的-g 安装到全局
卸载
npm uninstall -g grunt-cli
2 npm install -g grunt-init
使用grunt-init 进行配置(待补充)
配置:
packjson介绍:用于配置需要拉取的grunt插件信息。
{
"name": "demo",
"version": "1.0.0",
"devDependencies": {
"grunt-contrib-uglify": "~0.2.0"
}
}
里边的devDependecies用于定义需要引入的插件信息,定义你要拉取的依赖模块,上面的代码,拉取grunt-contrib-uglify插件(用于压缩js),字段的值~0.2.0,指明需要模块的版本号,“~”是至少的意思。
使用:npm install 依赖拉取成功后,在demo工程中生成了node_modules目录,该目录就包含了grunt-contrib-uglify插件模块的代码。
实例:创建gruntFile.js文件
module.exports = function(grunt) {
// 构建任务配置
grunt.initConfig({
//读取package.json的内容,形成个json数据
pkg: grunt.file.readJSON('package.json'),
uglify: {
//文件头部输出信息
options: {
banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
},
//具体任务配置
build: {
//源文件
src: 'src/hello-grunt.js',
//目标文件
dest: 'build/hello-grunt-min.js'
}
}
});
// 加载指定插件任务
grunt.loadNpmTasks('grunt-contrib-uglify');
// 默认执行的任务
grunt.registerTask('default', ['uglify']);
};
grunt核心方法:
grunt.initConfig(obj)
initConfig用于配置构建信息,第一个参数必须是个object。
grunt.file.readJSON(path)
读取一个json文件,通常我们会把构建任务的基本配置写在独立的json文件内,方便我们修改。
// 构建任务配置
grunt.initConfig({
//读取package.json的内容,形成个json数据
pkg: grunt.file.readJSON('package.json')
});
上面代码,将读取的json赋值给pkg字段,想要获取配置的值,就可以使用pkg.name这样的形式。
grunt.loadNpmTasks(pluginName)
加载指定插件任务,示例代码如下:
grunt.loadNpmTasks('grunt-contrib-uglify');
可以加载多个:
grunt.loadNpmTasks('grunt-contrib-uglify');
//css压缩
grunt.loadNpmTasks('grunt-contrib-cssmin');
grunt.registerTask(taskName,taskArray)
注册任务,比如下面的代码:
grunt.registerTask('default', ['uglify']);
注册默认执行的任务,即你运行grunt命令时,触发的任务构建。
第二个参数为任务目标名,在initConfig()中配置:
grunt.initConfig({
//读取package.json的内容,形成个json数据
pkg: grunt.file.readJSON('package.json'),
uglify: {
//文件头部输出信息
options: {
banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
},
//具体任务配置
build: {
//源文件
src: 'src/hello-grunt.js',
//目标文件
dest: 'build/hello-grunt-min.js'
}
}
});
uglify为任务目标名,options为grunt-contrib-uglify插件配置参数。
banner向输出文件打印你需要的信息。
build为具体任务构建配置
文件的简单正则匹配语法
文件名(目录路径)的匹配,基本上和ant一样。
* 匹配除了/外的任意数量的字符,比如foo/*.js
? 匹配除了/外的单个字符
** 匹配包含/的任意数量的字符,比如foo/**/*.js
! 排除指定文件,比如src: ['foo/*.js', '!foo/bar.js']
{} 可以理解为“or”表达式,比如src: 'foo/{a,b}*.js'
用法举例:
//匹配foo目录下所有th开头的js文件
{src: 'foo/th*.js', dest: ...}
//等价于{src: ['foo/a*.js', 'foo/b*.js'], dest: ...}
{src: 'foo/{a,b}*.js', dest: ...}
//优先处理bar.js,然后再处理其他文件
{src: ['foo/bar.js', 'foo/*.js'], dest: ...}
//排除处理foo/bar.js文件
src: ['foo/*.js', '!foo/bar.js'], dest: ...}
grunt常用插件 参见:http://gruntjs.cn/
1 常用插件有
grunt-contrib-concat:文件合并
grunt-contrib-copy:用于复制文件或目录的插件
grunt-contrib-clean:用于删除文件或目录的插件
grunt-contrib-compress:用于压缩文件和目录成为zip包
grunt-contrib-jshint:js代码检查
grunt-contrib-mincss:css压缩
grunt-contrib-uglify:js压缩
grunt-contrib-watch:实时监听插件
grunt-contrib-imagemin,能够快速的压缩工程内的图片
grunt-contrib-yuidoc:基于YUIDOC生成js API文档
grunt-karma:单测回归插件
参考网页:http://www.36ria.com/6192
http://www.36ria.com/6226
http://www.36ria.com/6273
转载于:https://www.cnblogs.com/fyking/p/3842421.html
grunt前端构建工具使用教程相关推荐
- Gulp.js—比Grunt更易用的前端构建工具-前端自动化
Gulp.js-比Grunt更易用的前端构建工具 Grunt是目前最流行的前端构建工具,对前端的效率帮助非常大,但Grunt并非完美无缺,json描述任务的方式,显得过于繁琐和不够简单,对于新手来说, ...
- npm run buil构建后页面白屏_从Npm Script到Webpack,6种常见的前端构建工具对比
从Npm Script到Webpack,6种常见的前端构建工具对比 小编说:历史上先后出现了一系列构建工具,它们各有优缺点.由于前端工程师很熟悉JavaScript,Node.js又可以胜任所有构建需 ...
- 前端构建工具 Gulp.js 上手实例
在软件开发中使用自动化构建工具的好处是显而易见的.通过工具自动化运行大量单调乏味.重复性的任务,比如图像压缩.文件合并.代码压缩.单元测试等等,可以为开发者节约大量的时间,使我们能够专注于真正重要的. ...
- 从Npm Script到Webpack,6种常见的前端构建工具对比
从Npm Script到Webpack,6种常见的前端构建工具对比 小编说:历史上先后出现了一系列构建工具,它们各有优缺点.由于前端工程师很熟悉JavaScript,Node.js又可以胜任所有构建需 ...
- 前端构建工具gulpjs的使用介绍及技巧 (转)
gulpjs是一个前端构建工具,与gruntjs相比,gulpjs无需写一大堆繁杂的配置参数,API也非常简单,学习起来很容易,而且gulpjs使用的是nodejs中stream来读取和操作数据,其速 ...
- [转]前端构建工具gulpjs的使用介绍及技巧
本文转自:http://www.cnblogs.com/2050/p/4198792.html gulpjs是一个前端构建工具,与gruntjs相比,gulpjs无需写一大堆繁杂的配置参数,API也非 ...
- 前端构建工具gulpjs的使用介绍及技巧
转载自:无双的博客园 原文地址:http://www.cnblogs.com/2050/p/4198792.html gulpjs是一个前端构建工具,与gruntjs相比,gulpjs无需写一大堆繁杂 ...
- 前端构建工具_构建工具
前端构建工具 深度JavaScript (Deep JavaScript) Choosing a development tool based on its popularity isn't a ba ...
- 前端构建工具(理解+使用)
一.构建工具可以做什么? 安装 vs 做事情 1.安装包工具:例如:npm.Bower,Yeoman可以安装几乎所有的东西. 他们可以安装前端框架,比如Angular.js或者React.js. 他们 ...
最新文章
- vue如何使用原生js写动画效果_手摸手,带你用 vue 动画实现原生 app 切换效果,丝滑般的体验...
- Windows中使用Python和C/C++联合开发应用程序起步
- 【java学习】Arraylist和LinkedList使用场景与性能对比
- JavaScript:改变li前缀图片和样式
- 如何让 C++ 和 C# 一样易用,而且效率更高?
- python 漂亮界面demo_在这个什么都看脸的时代,如何用 GUI 提高 python 程序的颜值?...
- SPSS多重响应分析(多选题)【SPSS 016期】
- 帅帅什么意思_帅帅帅是什么意思
- niosII处理器与串行D/A转换器接口设计
- nginx 区分手机浏览器和pc浏览器
- uni-app中view和text组件和动画的使用
- vue3编写组件的几种方式
- 马丁富勒微服务论文连接
- 老司机的奇怪noip模拟T3-zhugeliang
- Git 各指令的本质,真的是通俗易懂!
- xshell7双击没有反应的解决办法
- ADN8810 驱动
- Netcat工具的玩法
- Github如何回滚代码?
- 9-2 什么是零点漂移 产生零点漂移的主要原因是什么 差动放大电路为什么能抑制零点漂移
热门文章
- 9个让2D游戏创作更轻松的工具
- 那一年,整个游戏界差点因为一款垃圾游戏,而一同被“埋葬”
- 【2022年蓝桥杯】蓝桥杯第一次海选考试题(5题考试大二)(C#题解)
- switch与if效率实例解析·5年以下编程经验必看【C#】
- linux系统中查看gcc内置宏定义的命令方法
- Guava Cache用法介绍
- Spring MVC请求处理流程
- 一个调用其他activity的完整例子,使用了 onActivityResult和startActivityForResult
- Java中的四种引用方式的区别
- MySQL全文索引应用简明教程