grunt -- javascript自动化工具
grunt 是一个基于npm,node.js 用js编写的工具框架,可以自动完成一些重复性的任务(如合并文件,语法检查,压缩代码),
grunt拥有庞大的插件库,可以满足各种自动化批处理需求,常用的插件有:
concat ---> 合并文件
csslint ---> css语法检查
cssmin ---> css压缩
jshint ---> js语法检查
uglify ---> js压缩
watch ---> 自动化核心,监视文件修改并执行插件
autoprefixer ---> css浏览器前缀补全
node.js,grunt和grunt-cli 的安装略.
插件安装指令:
npm install grunt-contrib-concat --save-dev
npm install grunt-contrib-csslint --save-dev
npm install grunt-contrib-cssmin --save-dev
npm install grunt-contrib-jshint --save-dev
npm install grunt-contrib-uglify --save-dev
npm install grunt-contrib-watch --save-dev
npm install grunt-autoprefixer --save-dev
npm package.json 安装完插件后的配置
{
"name": "grunt_test",
"version": "1.0.1",
"devDependencies": {
"grunt": "^1.0.1",
"grunt-autoprefixer": "^3.0.4",
"grunt-contrib-concat": "^1.0.1",
"grunt-contrib-csslint": "^2.0.0",
"grunt-contrib-cssmin": "^1.0.2",
"grunt-contrib-jshint": "^1.0.0",
"grunt-contrib-uglify": "^2.0.0",
"grunt-contrib-watch": "^1.0.0"
}
}
[重中之重] Gruntfile.js grunt配置文件

//包装函数
module.exports=function (grunt) {
//任务配置,所有插件的配置信息
grunt.initConfig({
//获取 package.json 的信息
pkg:grunt.file.readJSON('package.json'), //js压缩
uglify: {
options: {
//头部注释
banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' +
'<%= grunt.template.today("yyyy-mm-dd") %> */',
//生成sourceMap
sourceMap: true
},
my_target: {
files: [
{
expand: true,
//源文件相对路径
cwd: 'src/',
//选择文件
src: ['*.js','!*.min.js'],
//目标文件输出目录
dest: 'dest/',
//后缀
ext: '.min.js'
}
]
}
}, //js语法检查
jshint: {
options:{
jshintrc:'.jshintrc'
},
my_target: ['src/*.js'],
}, //css压缩
cssmin:{
options: {
//文件头部输出信息
banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n',
//美化代码
beautify: {
//中文ascii化,非常有用,防止中文乱码
ascii_only: true
}
},
my_target: {
files: [
{
expand: true,
//源文件相对路径
cwd: 'src/',
//选择文件
src: ['*.css','!*.min.css'],
//目标文件输出目录
dest: 'dest/',
//后缀
ext: '.min.css'
}
]
}
}, //css语法检查
csslint:{
options:{
csslintrc:'.csslintrc'
},
build:['src/*.css']
}, //自动化
watch:{
test1:{
tasks:['jshint','uglify'],
options:{spawn:false}
},
test2:{
tasks:['csslint','cssmin'],
options:{spawn:false}
}
}, //合并文件
concat: {
options: {
separator: ';\n',
stripBanners: true,
banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
},
dist: {
src: ['src/*.js'],
dest: 'dest/basic.js',
},
}, //css浏览器前缀补全
autoprefixer: {
options: {
browsers: ['Chrome < 50', 'ie > 8' ,'ff < 20','opera < 39']
},
your_target: {
files: [
{
expand: true,
//源文件相对路径
cwd: 'src/',
//选择文件
src: ['*.css','!*.min.css'],
//目标文件输出目录
dest: 'dest/',
//后缀
ext: '.fix.css'
}
]
},
}, }); //告诉grunt我们将要使用的插件
grunt.loadNpmTasks('grunt-contrib-concat');//合并代码
grunt.loadNpmTasks('grunt-contrib-jshint');//js语法检查
grunt.loadNpmTasks('grunt-contrib-csslint');//css语法检查
grunt.loadNpmTasks('grunt-contrib-cssmin');//css压缩
grunt.loadNpmTasks('grunt-contrib-uglify');//js压缩
grunt.loadNpmTasks('grunt-contrib-watch');//自动化核心,监视文件修改并执行插件
grunt.loadNpmTasks('grunt-autoprefixer');//css浏览器前缀补全
//告诉grunt当我们在终端中输入grunt时需要做些什么(注意先后顺序)
grunt.registerTask('cont',['concat']);
grunt.registerTask('afix',['autoprefixer']);
grunt.registerTask('mcss',['cssmin']);
grunt.registerTask('mjs',['uglify']);
grunt.registerTask('default',['jshint','uglify','watch']);
}
1,js,css压缩配置中,都是多个文件单独压缩生成多个对应文件名的.min.js或.min.css,并生成对应的sourceMap
2,autoprefixer配置中browsers: ['Chrome < 50', 'ie > 8' ,'ff < 20','opera < 39'], 设定要兼容的浏览器版本,故意将版本设置调低,可以兼容给多的浏览器,否则默认只兼容
['> 1%', 'last 2 versions', 'Firefox ESR'] 最新版本的主流浏览器
3,js语法检查和css语法检查都引用了外部配置文件(json格式) .jshintrc 和 .csslintrc ,如下
.jshintrc:
{
"curly": true,
"eqeqeq": true,
"eqnull": true,
"browser": true,
"boss":false,
"expr":true,
"immed":true,
"newcap":true,
"noempty":true,
"noarg":true,
"undef":true,
"regexp":true,
"node":true,
"devel":true,
"globals": {
"jQuery": true
}
}
.csslintrc
{
"adjoining-classes":false,
"box-sizing":false,
"box-model" : false,
"compatible-vendor-prefixes": false,
"floats":false,
"font-sizes":false,
"gradients":false,
"important":false,
"known-properties":false,
"outline-none":false,
"qualified-headings":false,
"regex-selectors":false,
"shorthand":false,
"text-indent":false,
"unique-headings":false,
"universal-selector":false,
"unqualified-attributes":false
}
执行相应task:
已经注册的task, grunt.registerTask('mcss',['cssmin']') , 执行命令为 grunt mcss
未注册的task, 可以直接调用相应插件,执行命令为 grunt cssmin
grunt -- javascript自动化工具的更多相关文章
- 前端开发自动化工作流工具,JavaScript自动化构建工具grunt、gulp、webpack介绍
前端开发自动化工作流工具,JavaScript自动化构建工具grunt.gulp.webpack介绍 前端自动化,这样的一个名词听起来非常的有吸引力,向往力.当今时代,前端工程师需要维护的代码变得及为 ...
- JavaScript自动化构建工具grunt、gulp、webpack介绍
前端开发自动化工作流工具,JavaScript自动化构建工具grunt.gulp.webpack介绍 前端自动化,这样的一个名词听起来非常的有吸引力,向往力.当今时代,前端工程师需要维护的代码变得及为 ...
- 前端见微知著工具篇:Grunt实现自动化
转载说明 本篇文章为转载文章,来源为[前端福利]用grunt搭建自动化的web前端开发环境-完整教程,之所以转载,是因为本文写的太详细了,我很想自己来写,但是发现跳不出这篇文章的圈子,因为写的详尽,所 ...
- 如何选择JavaScript构建工具之Babel、Browserify、Webpack、Grunt以及Gulp
当我们开始一个新的 JavaScript 项目时,我们需要考虑的第一件事就是搭建一个前端编译环境.但是在面对众多的 JavaScript 构建工具时,我们却无所适从,不知道究竟哪一个才是最适合我们的. ...
- Javascript自动化文档工具JSDuck在Windows下的使用心得
作者: zyl910 一.工具比较 为了让前端JavaScript程序更具可维护性,更利于团队开发,文档非常重要.此时便需要使用自动化文档工具了. 我对比了各种JavaScript自动化文档工具,发现 ...
- Grunt自动化工具相关
Grunt 项目中安装grunt模块npm install grunt --save,删除模块 npm uninstall grunt ,缺失某个插件:npm install grunt-contri ...
- 前端自动化工具 -- grunt 使用简介
grunt作为一个前端构建工具,有资源压缩,代码检查,文件合并等功能. 下面就简单了解grunt的使用. 一.环境配置 grunt是基于nodejs的,所以需要一个 nodejs 环境,未了解的可以 ...
- Autojs - 用 JavaScript 实现自己的安卓手机自动化工具脚本
我是风筝,公众号「古时的风筝」,一个不只有技术的技术公众号,一个在程序圈混迹多年,主业 Java,另外 Python.React 也玩儿的 6 的斜杠开发者. Spring Cloud 系列文章已经完 ...
- 前端自动化工具gulp自动添加版本号
之前,我介绍了学习安装并配置前端自动化工具Gulp,觉得gulp确实比grunt的配置简单很多,于是我决定再深入学习一下gulp,就去网上查了资料,发现gulp还可以自动添加版本号,这个功能就为我平时 ...
随机推荐
- extjs combobox 设置下拉时显示滚动条 设置显示条数
extjs在点击下拉时如果没有限制它的高度,那么它的默认最大高度是300,显示的时候就会显示300的高度,知道选项内容超过这个高度时才会自动显示滚动条,往往在有些时候我们希望让combobox显示一个 ...
- eval函数:\的应用
<?php $string = "beautiful"; $time = "winter"; $str = 'This is a $string $tim ...
- gdb调试memcached
1.memcached安装前,要安装libevent 2.memcached在configure中 加上 CPPFLAGS='-ggdb3'选项 例如 本机 ./configure -prefix ...
- UML类图标识
矩形框:类 第一层:类名(抽象类用斜体). 第二层:属性(‘+’ 表示 public.‘-’ 表示 private.‘#’ 表示 protected). 第三层:方法. <<interfa ...
- 一起学习iOS开发专用词汇,每天记3个,助你变大牛-b
大家做开发最大的问题是什么?英语的问题应该困扰很多的同学的地方,我们提倡科学学习开发中的常用词汇.我们不要求大家有特别好的听.说.写,只要能够记住,能够认识这些常用词汇你以后的开发也将游刃有余.我们的 ...
- sqlserver中Profiler的使用
1.单击开始--程序--Microsoft SQL Server 2008--性能工具--SQL Server Profiler,如下图: 2.然后进入SqlServ ...
- 在Excel中将数字设置成文本格式的技巧
在Excel中将数字设置成文本格式的技巧 一个简单的方法,利用[数据]菜单的[分列]功能来将数字设置为文本格式.具体操作步骤为: 1.选中所有需要处理的数字单元格. 2.选择[数据]菜单[分列]功能. ...
- bzoj3573[Hnoi2014]米特运输
http://www.lydsy.com/JudgeOnline/problem.php?id=3573 好吧,虽然这是day1最后一题,但却是最水的一题....(前提:看懂题目) 仔细看题! 仔细看 ...
- 【4】JAVA---地址App小软件(UpdatePanel.class)(表现层)
修改地址信息的一个表现层类. 必须选中地址,才能修改,否则会弹出窗口提示, 修改地址界面: /* * UpdatePanel.java * */ package cn.hncu.addr.ui; im ...
- Android 各版本信息 (维基百科)
The following tables show the release dates and key features of all Android operating system updates ...