Grunt的配置及使用(压缩合并js/css)
Grunt的配置及使用(压缩合并js/css)
安装
前提是你已经安装了nodejs和npm。
你能够在 nodejs.org 下载安装包安装。也能够通过包管理器(比方在 Mac 上用 homebrew,同一时候推荐在 Mac 上用 homebrew)。
安装grunt CLI
npm install -g grunt-cli
依照官方的说法。grunt-cli仅仅是为了在同一台机器上安装不同的grunt版本号,那么咱们先不去管他。
在项目中使用grunt
首先须要往项目里加入两个文件:package.json和Gruntfile.js
· package.json:该文件用来为npm存放项目配置的元数据,与grunt关系最大的配置在devDependencies中。
· [javascript] view plaincopyprint?
1. {
2. "name": "cyjs",
3. "version": "0.1.0",
4. "description": "js for k68.org",
5. "homepage": "http://www.k68.org/",
6. "author": "firebaby",
7. "devDependencies": {
8. "grunt": "~0.4.1",
9. "grunt-contrib-jshint": "~0.3.0",
10. "grunt-contrib-concat": "~0.1.1",
11. "grunt-contrib-uglify": "~0.1.2",
12. "grunt-contrib-cssmin": "~0.5.0",
13. "grunt-htmlhint": "~0.9.2"
14. }
15. }
· {
· "name": "cyjs",
· "version": "0.1.0",
· "description": "js for k68.org",
· "homepage": "http://www.k68.org/",
· "author": "firebaby",
· "devDependencies": {
· "grunt": "~0.4.1",
· "grunt-contrib-jshint": "~0.3.0",
· "grunt-contrib-concat": "~0.1.1",
· "grunt-contrib-uglify": "~0.1.2",
· "grunt-contrib-cssmin": "~0.5.0",
· "grunt-htmlhint": "~0.9.2"
· }
}
· Gruntfile.js:注意G的大写,这个文件就是grunt的配置了,当中具体定义了每一个任务的细节和运行任务的顺序等。
一、安装grunt
方式一、调用配置文件一起安装
npm install
方式二、逐步安装
在命令行进入项目所在文件夹,键入例如以下命令就可以,npm会依据devDependencies中的配置,将须要的grunt及其插件下载到你的项目文件夹中。
npm install grunt --save-dev
grunt-contrib-jshint(js语法检查)、grunt-contrib-concat(js合并)、grunt-contrib-uglify(採用UglifyJS压缩js)、grunt-contrib-cssmin(Css压缩合并)、grunt-htmlhint(html语法验查),以上都是经常使用的插件。
很多其它插件,请訪问:http://gruntjs.com/plugins
在项目文件夹下安装插件也可採用例如以下方式安装:
安装:uglify
|
[txt] view plaincopyprint? 1. npm install grunt-contrib-uglify npm install grunt-contrib-uglify |
安装:cssmin
|
[txt] view plaincopyprint? 1. npm install grunt-contrib-cssmin npm install grunt-contrib-cssmin |
插件安装完毕后,查看根文件夹,会发现node_modules文件夹,包括了对应的插件文件夹。
二、新建Gruntfile.js
Gruntfile.js由下面内容组成
1、wrapper函数。结构例如以下,这是Node.js的典型写法,使用exports公开API
[javascript] view plaincopyprint?
1. module.exports = function(grunt) {
2. // Do grunt-related things in here
3. };
module.exports = function(grunt) {
// Do grunt-related things in here
};
2、项目和任务配置
3、加载grunt插件和任务
4、定制运行任务
例:
[javascript] view plaincopyprint?
1. module.exports = function(grunt) {
2. //配置參数
3. grunt.initConfig({
4. pkg: grunt.file.readJSON('package.json'),
5. concat: {
6. options: {
7. separator: ';',
8. stripBanners: true
9. },
10. dist: {
11. src: [
12. "js/config.js",
13. "js/smeite.js",
14. "js/index.js"
15. ],
16. dest: "assets/js/default.js"
17. }
18. },
19. uglify: {
20. options: {
21. },
22. dist: {
23. files: {
24. 'assets/js/default.min.js': 'assets/js/default.js'
25. }
26. }
27. },
28. cssmin: {
29. options: {
30. keepSpecialComments: 0
31. },
32. compress: {
33. files: {
34. 'assets/css/default.css': [
35. "css/global.css",
36. "css/pops.css",
37. "css/index.css"
38. ]
39. }
40. }
41. }
42. });
43.
44. //加载concat和uglify插件。分别对于合并和压缩
45. grunt.loadNpmTasks('grunt-contrib-concat');
46. grunt.loadNpmTasks('grunt-contrib-uglify');
47. grunt.loadNpmTasks('grunt-contrib-cssmin');
48.
49. //注冊任务
50. grunt.registerTask('default', ['concat', 'uglify', 'cssmin']);
51. }
module.exports = function(grunt) {
//配置參数
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
concat: {
options: {
separator: ';',
stripBanners: true
},
dist: {
src: [
"js/config.js",
"js/smeite.js",
"js/index.js"
],
dest: "assets/js/default.js"
}
},
uglify: {
options: {
},
dist: {
files: {
'assets/js/default.min.js': 'assets/js/default.js'
}
}
},
cssmin: {
options: {
keepSpecialComments: 0
},
compress: {
files: {
'assets/css/default.css': [
"css/global.css",
"css/pops.css",
"css/index.css"
]
}
}
}
});
//加载concat和uglify插件,分别对于合并和压缩
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-cssmin');
//注冊任务
grunt.registerTask('default', ['concat', 'uglify', 'cssmin']);
}
grunt api文档:http://gruntjs.com/api/grunt
三、命令行运行grunt任务
进入到项目根文件夹,敲:
|
[txt] view plaincopyprint ">? 1. grunt grunt |
就会按Gruntfile配置的文件进行压缩合并。
也能够单独运行,例运行js压缩命令:
|
[txt] view plaincopyprint? 1. grunt uglify grunt uglify |
css压缩命令
|
[txt] view plaincopyprint ">? 1. grunt cssmin |
DEMO下载:点击打开链接
Grunt的配置及使用(压缩合并js/css)的更多相关文章
- 前端构建工具 Gulp 压缩合并JS/CSS 并添加版本号、ES6转ES5
Gulp 基于 Node.js 的前端构建工具,可以实现前端代码的编译(sass.less).压缩合并(JS.CSS).测试:图片的压缩:已经添加 JS 和 CSS 版本号,防止浏览器缓存. 1. 安 ...
- 引用:使用grunt 压缩 合并js、css文件
引用:https://www.jianshu.com/p/08c7babdec65 压缩 js 文件 1.创建一个目录 名为grunt 目录.png 2.在grunt目录下创建一个 src目录,存 ...
- 第十一节:Bundles压缩合并js和css及原理分析
一. 简介 1.背景:浏览器默认一次性请求的网络数是有上限的,如果你得js和css文件太多,就会导致浏览器需要多次加载,影响页面的加载速度, MVC中提供Bundles的方式压缩合并js和css,是M ...
- Google Pagespeed,自动压缩优化JS/CSS/Image
Google Pagespeed,自动压缩优化JS/CSS/Image 浏览: 发布日期:// 分类:技术分享 关键字: Nginx Appache Pagespeed 自动压缩优化JS/CSS/Im ...
- 自写脚本实现上线前本地批量压缩混淆 js , css 代码。
最近做项目遇到一个要求,就是把本地的 js 和 css 进行压缩后再上线,由于之前项目并没有使用 webpack 之类的库,项目上也因为一些机密不能在线上压缩,这无疑给代码打包压缩带来了很大麻烦,于是 ...
- 使用PHP和GZip压缩网站JS/CSS文件加速网站访问速度
使用PHP和GZip压缩网站JS/CSS文件加速网站访问速度 一些泛WEB 2.0网站为了追求用户体验,可能会大量使用CSS和JS文件.这就导致在服务器带宽一定的情况下,多用户并发访问速度变慢.如何加 ...
- maven 压缩、合并 js, css
转载自:http://blog.csdn.net/fangxing80/article/details/17639607 我们知道在 Web 应用开发中为了提高客户端响应速度,需要将页面使用的资源最小 ...
- 压缩/批量压缩/合并js文件
写在前面 如果文件少的话,直接去网站转化一下就行. http://tool.oschina.net/jscompress?type=3 1.压缩单个js文件 cnpm install uglify-j ...
- Web性能优化之动态合并JS/CSS文件并缓存客户端
来源:微信公众号CodeL 在Web开发过程中,会产生很多的js/css文件,传统的引用外部文件的方式会产生多次的http请求,从而加重服务器负担且网页加载缓慢,如何在一次请求中将多个文件一次加载出来 ...
随机推荐
- CUDA学习笔记2:CUDA(英伟达显卡统一计算架构)与已有的VS项目结合
一.步骤 1.先新建一个简单的控制台应用程序,项目名称为Mytest,如下图所示: 2.在项目中添加一个名为Test.cu文件,如下图所示: 3.在解决方案资源管理器中选择该项目并点击右键,在弹出的菜 ...
- 我的OI生涯 第五章
我的OI生涯 第五章 千古诗才,蓬莱文章建安骨 一身傲骨,青莲居士谪仙人 李白追月逆江河 包黑斩龙顺民心 豪气压群雄,能使力士脱靴,贵妃捧砚; 仙才媲众美,不让参军俊逸,开府清新 我辈此中惟饮酒 先生 ...
- 零配置文件搭建SpringMvc
零配置文件搭建SpringMvc SpringMvc 流程原理 (1)用户发送请求至前端控制器DispatcherServlet:(2) DispatcherServlet收到请求后,调用Handle ...
- 【8.15校内测试】【队列】【manacher】
dp??不能确定转移状态.考虑用优先队列储存最优决策点,可是发现当前选择最优不能保证最后最优,在后面可以将之前用过的替换过来. 比如数据: 3 5 4 6 只储存a[i]来决策不能延展到后面的状态,因 ...
- IOS http 请求
asihttprequest 为第三方数据请求,一下为get 和post 两种请求. Get: NSString *loginName=@"Tony"; NSString *pw ...
- Backbone.js 的最佳应用场景有哪些?#zhihu#
这段时间,想再次了解下backbone js的相关知识,就把一些认为不错的拿过来了: 新版的有道笔记 Web 版(http://note.youdao.com)也使用了 Backbone.就像其他答案 ...
- Python,JAVA中子类的构造函数与父类构造函数的关系
Python: 子类不重载.覆盖父类的构造函数(子类不自己定义构造函数),则构造子类时会调用父类构造函数 若子类覆盖了父类的构造函数,则构造子类时不执行父类的构造函数,但仍继承了父类,如需调用父类构造 ...
- 【MongoDB】windows下搭建Mongo主(Master)/从(slave)数据库同步
在前面一系列的文章中.我们讲述了mongodb的基本操作,高级查询以及索引的使用. 该篇博客主要说明在windows系统怎样创建主从数据库同步: 须要启动两个mongoDb文档数据库,一个是主模式启动 ...
- Si4355 低电流 Sub-GHz接收器
Silicon Labs 的 Si4355 是易于使用的.低电流.Sub-GHz EZRadio® 接收器.覆盖所有主要波段,结合了即插即用的简单性和需要处理各种不同应用的灵活性.紧凑的 3 mm x ...
- 一、 Log4E插件下载
下载地址:http://log4e.jayefem.de/content/view/3/2/ 二.安装Log4E插件 将下载下来的压缩包解压缩,如下图所示: 解压缩生成的[de.jayefem.log ...