引用:使用grunt 压缩 合并js、css文件
引用:https://www.jianshu.com/p/08c7babdec65
压缩 js 文件
1、创建一个目录 名为grunt

2、在grunt目录下创建一个 src目录,存放我们要压缩、合并的js文件。

3、创建package.json文件

- package.json文件,包含了项目的一些信息,如项目的名称、描述、版本号、依赖包等。
package.json文件中的内容如下:
{
"name": "grunt",
"file": "zepto",
"version": "0.1.0",
"description": "demo",
"devDependencies": {
"grunt": "~0.4.0",
"grunt-contrib-requirejs": "~0.4.1",
}
}
执行命令 npm install 下载相关文件,成功后在下载压缩js文件所需要的grunt-contrib-uglify插件,并更新package.json文件。

安装成功后package.json文件内容如下:
{
"name": "grunt",
"file": "zepto",
"version": "0.1.0",
"description": "demo",
"license": "MIT",
"devDependencies": {
"grunt": "~0.4.1",
"grunt-contrib-requirejs": "~0.4.1",
"grunt-contrib-uglify": "^3.0.1" //js压缩插件
}
}
4、创建Gruntfile.js 文件
Gruntfile.js 文件就是一个普通的js文件,几乎所有的任务都定义在该文件中。
Gruntfile.js 文件内容如下:
module.exports = function (grunt) {
// 项目配置
grunt.initConfig({
//grunt.file.readJSON 将我们的配置文件读出,并且转换为json对象
pkg: grunt.file.readJSON('package.json'),
uglify: {
options: {
// 压缩输出头信息
banner: '/*! <%= pkg.file %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
},
build: {
src: 'src/<%=pkg.file %>.js', //压缩src文件夹下的xxx.js文件为xxx.min.js 并放到dest文件夹。
dest: 'dest/<%= pkg.file %>.min.js'
}
}
});
// 加载提供"uglify"任务的插件
grunt.loadNpmTasks('grunt-contrib-uglify');
// 默认任务
grunt.registerTask('default', ['uglify']);
}
4、执行grunt任务

在dest文件中就生成了zepto.min.js文件,如果没有 dest文件会自动创建一个dest文件夹。

整个目录结构如下:

合并 js 文件
合并js依赖于 "grunt-contrib-concat"插件,下载grunt-contrib-concat插件并更新package.json文件。
{
"name": "grunt",
"file": "zepto",
"version": "0.1.0",
"description": "demo",
"devDependencies": {
"grunt": "~0.4.0",
"grunt-contrib-requirejs": "~0.4.1",
"grunt-contrib-concat": "~0.1.1" //合并文件
"grunt-contrib-uglify": "~0.1.2", //压缩,采用UglifyJs
}
}
Gruntfile.js 内容修改如下:
module.exports = function (grunt) {
// 项目配置
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
concat: {
options: {
separator: ';'
},
dist: {
//合并三个 js 到 libs.js 文件
src: ['src/zepto.js', 'src/underscore.js', 'src/backbone.js'],
dest: 'dest/libs.js'
}
}
});
grunt.loadNpmTasks('grunt-contrib-concat');
// 默认任务
grunt.registerTask('default', ['concat']);
}
生成的 libs.js文件

整个目录结构:

合并 并压缩js 文件
Gruntfile.js文件内容如下:
module.exports = function (grunt) {
// 项目配置
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
//合并js
concat: {
dist: {
src: ['src/zepto.js', 'src/underscore.js', 'src/backbone.js'],
dest: 'dest/libs.js'
}
},
//压缩合并后的js文件
uglify: {
build: {
src: 'dest/libs.js',
dest: 'dest/libs.min.js'
}
}
});
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-concat');
// 默认任务
grunt.registerTask('default', ['concat', 'uglify']);
}

压缩css 文件
首先要安装插件 grunt-contrib-cssmin,并更新package.json文件。

package.json文件内容更新如下
{
"name": "grunt",
"file": "zepto",
"version": "0.1.0",
"description": "demo",
"license": "MIT",
"devDependencies": {
"grunt": "~0.4.1",
"grunt-contrib-requirejs": "~0.4.1",
"grunt-contrib-concat": "~0.1.1",
"grunt-contrib-cssmin": "^2.2.0",
"grunt-contrib-uglify": "~0.2.1",
},
"dependencies": {
"cssmin": "^0.4.3",
"express": "3.x"
}
}
Gruntfile.js文件内容:
module.exports = function (grunt) {
// 项目配置
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
cssmin:{
options:{
stripBanners:true, //合并时允许输出头部信息
banner:'/*!<%= pkg.file %> - <%= pkg.version %>-'+'<%=grunt.template.today("yyyy-mm-dd") %> */\n'
},
build:{
src:'src/css/index.css',//压缩
dest:'dest/css/index.min.css' //dest 是目的地输出
}
}
});
grunt.loadNpmTasks('grunt-contrib-cssmin');
// 默认任务
grunt.registerTask('default', ['cssmin']);
}
执行命令 grunt

结果生成index.min.css

合并css 文件
合并css文件用的插件是grunt-contrib-concat,上面已经安装过了,直接看Gruntfile.js中的代码。
module.exports = function (grunt) {
// 项目配置
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
concat: {
options: {
separator: ';'
},
cssConcat: {
src: ['src/css/zepto.css', 'src/css/underscore.css', 'src/css/backbone.css'],
dest: 'dest/css/libs.css'
}
},
});
grunt.loadNpmTasks('grunt-contrib-concat');
// 默认任务
grunt.registerTask('default', ['concat']);
}
执行grunt命令,结果生成libs.css文件

合并js、css文件并压缩文件
package.json文件
{
"name": "grunt",
"file": "zepto",
"version": "0.1.0",
"description": "demo",
"license": "MIT",
"devDependencies": {
"grunt": "~0.4.1",
"grunt-contrib-concat": "~0.1.1", //合并js css 插件
"grunt-contrib-cssmin": "^2.2.0", //压缩css插件
"grunt-contrib-uglify": "~0.2.1", //压缩js插件
"grunt-contrib-jshint": "~0.6.3",
"grunt-contrib-requirejs": "~0.4.1",
"grunt-strip": "~0.2.1"
},
"dependencies": {
"cssmin": "^0.4.3",
"express": "3.x"
}
}
Gruntfile.js文件:
module.exports = function (grunt) {
// 项目配置
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
concat: {
options: {
separator: ';'
},
//合并css
cssConcat: {
src: ['src/css/zepto.css', 'src/css/underscore.css', 'src/css/backbone.css'],
dest: 'dest/css/libs.css'
},
//合并js
jsConcat:{
src:['src/zepto.js','src/underscore.js','src/backbone.js'],
dest:'dest/libs.js'
}
},
//压缩css
cssmin:{
options:{
stripBanners:true, //合并时允许输出头部信息
banner:'/*!<%= pkg.file %> - <%= pkg.version %>-'+'<%=grunt.template.today("yyyy-mm-dd") %> */\n'
},
build:{
src:'dest/css/libs.css',//压缩
dest:'dest/css/libs.min.css' //dest 是目的地输出
}
},
//压缩js
uglify: {
build: {
src: 'dest/libs.js',
dest: 'dest/libs.min.js'
}
}
});
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-cssmin');
// 默认任务
grunt.registerTask('default', ['concat','uglify','cssmin']);
}
执行命令grunt,结果

作者:赵碧菡
链接:https://www.jianshu.com/p/08c7babdec65
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
引用:使用grunt 压缩 合并js、css文件的更多相关文章
- Grunt的配置及使用(压缩合并js/css)
Grunt的配置及使用(压缩合并js/css) 安装 前提是你已经安装了nodejs和npm. 你能够在 nodejs.org 下载安装包安装.也能够通过包管理器(比方在 Mac 上用 homebre ...
- 使用PHP和GZip压缩网站JS/CSS文件加速网站访问速度
使用PHP和GZip压缩网站JS/CSS文件加速网站访问速度 一些泛WEB 2.0网站为了追求用户体验,可能会大量使用CSS和JS文件.这就导致在服务器带宽一定的情况下,多用户并发访问速度变慢.如何加 ...
- Web性能优化之动态合并JS/CSS文件并缓存客户端
来源:微信公众号CodeL 在Web开发过程中,会产生很多的js/css文件,传统的引用外部文件的方式会产生多次的http请求,从而加重服务器负担且网页加载缓慢,如何在一次请求中将多个文件一次加载出来 ...
- 前端构建工具 Gulp 压缩合并JS/CSS 并添加版本号、ES6转ES5
Gulp 基于 Node.js 的前端构建工具,可以实现前端代码的编译(sass.less).压缩合并(JS.CSS).测试:图片的压缩:已经添加 JS 和 CSS 版本号,防止浏览器缓存. 1. 安 ...
- 第十一节:Bundles压缩合并js和css及原理分析
一. 简介 1.背景:浏览器默认一次性请求的网络数是有上限的,如果你得js和css文件太多,就会导致浏览器需要多次加载,影响页面的加载速度, MVC中提供Bundles的方式压缩合并js和css,是M ...
- 开箱即用 - Grunt合并和压缩 js,css 文件
js,css 文件合并与压缩 Grunt 是前端自动化构建工具,类似webpack. 它究竟有多强悍,请看它的 介绍. 这里只演示如何用它的皮毛功能:文件合并与压缩. 首先说下js,css 合并与压缩 ...
- ASP.NET MVC 4 Optimization的JS/CSS文件动态合并及压缩
JS/CSS文件的打包合并(Bundling)及压缩(Minification)是指将多个JS或CSS文件打包合并成一个文件,并在网站发布之后进行压缩,从而减少HTTP请求次数,提高网络加载速度和页面 ...
- JS&CSS文件请求合并及压缩处理研究(五)
接上篇.在我们最终调用 @Html.RenderResFile(ResourceType.Script) 或者 @Html.RenderResFile(ResourceType.StyleSheet) ...
- 折腾一两天,终于学会使用grunt压缩合并混淆JS脚本,小激动,特意记录一下+spm一点意外收获
很长时间没有更新博客了,实在是太忙啦...0.0 ,以下的东西纯粹是记录,不是我原创,放到收藏夹还担心不够,这个以后常用,想来想去,还是放到这里吧,,丢不了..最后一句废话,网上搜集也好原创也罢,能解 ...
随机推荐
- 【codeforces 765F】Souvenirs
Description Artsem is on vacation and wants to buy souvenirs for his two teammates. There are n souv ...
- frame的用法
<iframe> 标签规定一个内联框架.一个内联框架被用来在当前 HTML 文档中嵌入另一个文档. 所有的主流浏览器都支持<iframe>标签.你可以把提示的文字放到 < ...
- CCPC-Wannafly Winter Camp Day5 (Div2, onsite) Sorting(线段树)
题目链接 题意 对序列进行三种操作: 1.区间求和. 2.将区间小于等于$x$的数不改变相对顺序的前提下放到$x$左边,用同样规则将比$x$大的放到右边. 3.将区间大于$x$的数不改变相对顺序的前提 ...
- android Button上面的英文字符串自动大写的问题解决
xml文件中加入: android:textAllCaps="false"
- centos6,与centos7对于防火墙的操作
CentOS 6.5 1.开放指定端口/sbin/iptables -I INPUT -p tcp --dport 端口号 -j ACCEPT //写入修改/etc/init.d/iptables ...
- EDID:识别和解决常见问题指南
随着 HDMI.DVI 和 DisplayPort 的迅速采用,专业视音频行业正继续从模拟向数字视频技术转换.虽然在很大程度上取得了成功,但在向最终用户提供稳定.无故障的视频系统时,这种转变仍带来了诸 ...
- 三目算法、if/else,switch/case运用
//输入学生的成绩,判断考试是否及格,及格6大于等于0 //第一种写法:三目运算 大多用于单独判断是否满足某个条件 import java.util.Scanner; public class Hel ...
- 2、使用rpm包安装grafana
Grafana最新版本4.3.1安装从官网下载相关的rpm包 http://docs.grafana.org/installation/rpm/ 1.下载二进制包,安装 [root@localhost ...
- myeclipse安装spring插件
1.查看 myeclipse 中的 eclipse 对应的版本 2.下载对应eclipse的 spring 插件 首先要安装spring插件,可以到spring官网下载 地址(https://spr ...
- Git使用七:修改最后一次提交、删除文件和重命名文件
修改最后一次提交: 在实际开发中,可能会遇到以下两种情景:情景一:版本刚一提交(commit)到仓库,突然想起漏掉两个文件还没有添加(add).情景二:版本刚一提交(commit)到仓库,突然想起版本 ...