开箱即用 - Grunt合并和压缩 js,css 文件
js,css 文件合并与压缩
Grunt 是前端自动化构建工具,类似webpack。 它究竟有多强悍,请看它的 介绍。
这里只演示如何用它的皮毛功能:文件合并与压缩。
首先说下js,css 合并与压缩的好处:
- 减少 HTTP 请求次数;
- 节省带宽流量;
- js 压缩把代码混淆后可看性降低,带来一定安全性;
1. 安装Grunt
Grunt 是运行在 Node.js 平台上,先要 安装 Node.js, 然后 安装 Grunt
npm install -g grunt-cli
2. 使用Grunt
两个关键的配置文件:
- Gruntfile.js 是用来配置和定义任务并加载Grunt插件;
- package.json 是 npm 用来配置项目的元数据,如配置文件合并与压缩依赖的插件;
我们的 DEMO 项目Gruntfile.js 配置文件:
'use strict';
module.exports = function(grunt) {
// 项目配置
grunt.initConfig({
// 加载元数据
pkg: grunt.file.readJSON('package.json'),
banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' +
'<%= grunt.template.today("yyyy-mm-dd") %>*/\n',
// 合并任务配置
concat: {
options: {
banner: '<%= banner %>',
stripBanners: true,
},
css: {
// 源文件,数组,
src: ['src/css/test1.css', 'src/css/test2.css'],
// 目标文件, pkg.name 是定义在 package.json 文件中的 name
dest: 'dest/<%= pkg.name %>.css'
},
js: {
options: {
// js 文件合并用 ';'分隔
separator: ';',
},
src: ['src/js/test1.js', 'src/js/test2.js'],
dest: 'dest/<%= pkg.name %>.js'
},
},
// 压缩 css 文件
cssmin: {
css: {
src: 'dest/<%= pkg.name %>.css',
dest: 'dest/<%= pkg.name %>-min.css'
}
},
// 压缩 js 文件
uglify: {
js: {
src: 'dest/<%= pkg.name %>.js',
dest: 'dest/<%= pkg.name %>.min.js'
},
},
});
// These plugins provide necessary tasks.
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-css');
// 指定默认任务.
grunt.registerTask('default', ['concat','cssmin','uglify']);
};
每个配置的作用和意义,请看上面的注释,应该很清晰了,注意的是任务的命名不能改: concat, cssmin,uglify, 否则不识别;
package.json 配置
{
"name": "all",
"description": "js,css 文件合并与压缩",
"version": "0.1.0",
"homepage": "https://git.oschina.net/grissom/grunt_demo.git",
"author": "Grissom",
"repository": {
"type": "git",
"url": "https://git.oschina.net/grissom/grunt_demo.git"
},
"engines": {
"node": ">= 0.10.0"
},
"devDependencies": {
"grunt-contrib-concat": "~0.3.0",
"grunt-contrib-uglify": "~0.2.0",
"grunt": "~0.4.5",
"grunt-css": ">0.0.0"
},
"keywords": []
}
3. 执行Grunt
- 打开 Node.js 的命令行窗口;
- 进入到项目的路径;
- 安装依赖插件, 执行
npm install命令; - 执行合并与压缩任务
grunt命令;

Demo 源码
开箱即用 - Grunt合并和压缩 js,css 文件的更多相关文章
- MVC打包压缩JS&CSS文件调试时过滤了一些文件
BundleTable.这个确实是比较好用,打包并压缩了CSS,使之加载时减少流量. 但是在调试的时候会疑问为何有很多JS,CSS文件无法打包,其实是因为调试时VS自动过滤了如下文件: 后台跟踪了 ...
- gulp入门-压缩js/css文件(windows)
类似于grunt,都是基于Node.js的前端构建工具.不过gulp压缩效率更高. 工具/原料 nodejs/npm 方法/步骤 首先要确保pc上装有node,然后在global环境和项目文件中都in ...
- IIS7.5打开GZip压缩,同时启用GZip压缩JS/CSS文件的设置方法[bubuko.com]
IIS7.5或者IIS7.0开启GZip压缩方法:打开IIS,在右侧点击某个网站,在功能视图中的“IIS”区域,双击进入“压缩”,如图下图: 分别勾选“启用动态内容压缩”和“启用静态内容压缩”.这样最 ...
- Web网站配置Gzip,压缩js css文件
启用apache的gzip 找到httpd.conf,打开文件找到对mod_deflate的注释 #LoadModule deflate_module modules/mod_deflate.so 去 ...
- 用GruntJS合并、压缩JS文件
为什么要合并.压缩你的JS文件? 一个项目开发完成我们总能发现有一堆js文件非常混乱. 一般在一个HTML文档加载的时候,浏览器会根据HTML代码从上到下读取所需要加 ...
- ASP.NET MVC 4 Optimization的JS/CSS文件动态合并及压缩
JS/CSS文件的打包合并(Bundling)及压缩(Minification)是指将多个JS或CSS文件打包合并成一个文件,并在网站发布之后进行压缩,从而减少HTTP请求次数,提高网络加载速度和页面 ...
- JS&CSS文件请求合并及压缩处理研究(五)
接上篇.在我们最终调用 @Html.RenderResFile(ResourceType.Script) 或者 @Html.RenderResFile(ResourceType.StyleSheet) ...
- java Web程序使用wro4j合并、压缩js、css等静态资源
在Web项目中,js.css合并压缩,不仅有利于减少Http请求数量.减少宽带资源占用,还能有效的管理各种js.css的引入,使整个项目更加有序.而对于访问用户来说,其更大的好处是增加了页面的打开速度 ...
- 前端js,css文件合并三种方式,bat命令
前端js,css文件合并三种方式,bat命令 前端js文件该如何合并三个方式如下:1. 一个大文件,所有js合并成一个大文件,所有页面都引用它.2. 各个页面大文件,各自页面合并生成自己所需js的大文 ...
随机推荐
- read cache return null
http://stackoverflow.com/questions/8063590/unexpected-behaviour-after-memcached-server-restarts-how- ...
- js中焦点的含义是什么
焦点即是光标 焦点是在页面上屏幕中闪动的的小竖线,鼠标点击可获得光标,Tab键可按照设置的Tabindex切换焦点
- A tutorial that will show you how to build an instant messaging app with Sinch.
http://stackoverflow.com/questions/26247986/unsatisfiedlinkerror-couldnt-load-sinch-android-rtc-from ...
- [DNS]ACL、also-notify、视图服务器及安全设置
1. ACL :访问控制列表放在named.conf的头部,如果acl的内容太多,可以另创建一个文件,将acl放在该文件中,再在主配置文件named.conf用include 将文件加载进来(记得放在 ...
- 《数据结构与算法分析:C语言描述》读书笔记------练习1.1 求第K大的数
求一组N个数中的第k个最大者,设k=N/2. import java.util.Random; public class K_Max { /** * @param args */ //求第K大的数,保 ...
- linux之scp
传输文件夹 scp -r -P 目标端口号 文件夹名 目标用户名@目标服务器地址:目标存放地址 传输文件夹 scp -P 目标端口号 文件名 目标用户名@目标服务器地址:目标存放地址
- PHP获取当前类名、函数名、方法名
PHP获取当前类名.方法名 __CLASS__ 获取当前类名 __FUNCTION__ 当前函数名(confirm) __METHOD__ 当前方法名 (bankcard::confirm) _ ...
- Python的zip函数
zip函数接受任意多个(包括0个和1个)序列作为参数,返回一个tuple列表.具体意思不好用文字来表述,直接看示例: 1.示例1: x = [1, 2, 3] y = [4, 5, 6] z = [7 ...
- 【Xilinx-Petalinux学习】-01-开发环境搭建与PetaLinux的安装
开发环境 VMware12, Ubuntu 16.04 64 bit 在VMware中安装Ubuntu,用户名:xilinx-arm 密码:root step1: VMware Tools问题 不知道 ...
- Python3基础 set() 集合 创建集合与特点:自动将重复合并掉 不支持索引
镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.-------------------------------------- ...