使用Gulp进行代码压缩的步骤以及配置
一、安装步骤
1.首先确定是否安装了node.js,如果未安装,请先安装node.js;
2.确定是否安装了包管理工具npm,如未安装请安装:npm install npm -g;
3.安装gulp: npm install gulp --save-dev;(至于为什么是--save-dev,因为我们只是在开发环境中会用到,生产发布是用不到它的)
4.安装用于html、css、js代码压缩常用的插件,分别为:gulp-htmlmin、gulp-cssnano、gulp-uglify;
npm install --save-dev gulp-htmlmin;
npm install --save-dev gulp-cssnano;
npm install --save-dev gulp-uglify;
5.在根目录新建文件 gulpfile.js ,这个文件是使用gulp压缩的配置文件,相关配置如下;
'use strict';
var gulp = require('gulp');
//压缩html
var htmlmin = require('gulp-htmlmin');
gulp.task('html', function(){
gulp.src(['./src/app/*.html'])
.pipe(htmlmin({
collapseWhitespace: true,//压缩HTML
removeComments: true,//清除HTML注释
removeScriptTypeAttributes: true,//删除<script>的type="text/javascript"
removeStyleLinkTypeAttributes: true,//删除<link>的type="text/css"
minifyJS: true,//压缩页面JS
minifyCSS: true//压缩页面CSS
}))
.pipe(gulp.dest('dist/src/app'));
});
//压缩css
var cssnano = require('gulp-cssnano');
gulp.task('style', function(){
gulp.src(['./css/*.css'])
.pipe(cssnano())
.pipe(gulp.dest('dist/css'));
});
//压缩js
var uglify = require('gulp-uglify');
gulp.task('script', function(){
gulp.src(['./src/static/*.js'])
.pipe(uglify({
mangle: false// 跳过函数名,使其不被压缩,函数名也压缩可改为true
}))
.pipe(gulp.dest('dist/src/static'));
});
//同步代码变化
gulp.task('dist', function(){
gulp.watch(['./src/app/*.html'], ['html']);
gulp.watch(['./css/*.css'], ['style']);
gulp.watch(['./src/static/*.js'], ['script']);
});
gulp.task("default", ["html","style","script","dist"]);
6.初始化得到文件package.json:npm init ;(简单点一路回车即可)
7.一切妥当,命令行执行gulp,等待完成即可。
注:(1).这里的配置进行了适当简写,如果项目不是新建立的,而是在项目原有基础上增加页面,为了提升压缩效率可以不匹配所有的html、css、js文件,只配置你新增的文件即可,如下例子:
//压缩html
var htmlmin = require('gulp-htmlmin');
gulp.task('html', function(){
gulp.src(['./src/app/level2HK.html','./src/app/index.html'])
.pipe(htmlmin({
collapseWhitespace: true,//压缩HTML
removeComments: true,//清除HTML注释
removeScriptTypeAttributes: true,//删除<script>的type="text/javascript"
removeStyleLinkTypeAttributes: true,//删除<link>的type="text/css"
minifyJS: true,//压缩页面JS
minifyCSS: true//压缩页面CSS
}))
.pipe(gulp.dest('dist/src/app'));
});
gulp.src(['路径a','路径b'])中是支持数组形式入参的,当然也可以直接字符串入参 gulp.src('路径a')
(2)本处只列举了代码的初步压缩模块,适合刚刚接触gulp的初学者,其实gulp还有其他很多优秀的插件,如代码的合并、混淆等等插件,用户可以根据自己的项目实际需要进行安装并进行相应配置;
如:代码合并插件 gulp-concat;
文件名称修改插件 gulp-rename;
图片压缩插件 gulp-imagemin;
sass文件编译插件 gulp-sass;
检查改变状态 gulp-changed;
如下对js的压缩、合并、修改名称:
gulp.task('scripts', function() {
return gulp.src('./src/static/*.js')
.pipe(concat('main.js')) //合并所有js到main.js
.pipe(gulp.dest('./src/static')) //输出main.js到文件夹
.pipe(rename({suffix: '.min'})) //rename压缩后的文件名
.pipe(uglify()) //压缩
.pipe(gulp.dest('./src/static')); //输出
});
如下对图片的压缩配置:
// 压缩图片
gulp.task('images', function () {
gulp.src('./src/images/*.*')
.pipe(changed('dist/images', {hasChanged: changed.compareSha1Digest}))
.pipe(imageMin({
progressive: true,// 无损压缩JPG图片
svgoPlugins: [{removeViewBox: false}]// 不移除svg的viewbox属性
}))
.pipe(gulp.dest('dist/images'))
.pipe(browserSync.reload({stream:true}));
});
使用Gulp进行代码压缩的步骤以及配置的更多相关文章
- 使用gulp进行代码压缩
gulp是一个很不错的前端自动化工具,可以帮我们完成一些重复性操作,比如html.css和js代码的压缩.合并.混淆等,虽然这些操作可以通过一些在线工具帮我们实现,但不断重复地复制粘贴肯定比不上一句命 ...
- gulp做的前端代码压缩报错,揭示具体错误 信息
用gulp做的前端代码压缩,今天在打包的时候发现打包出错了.报的错误是--unable to minify JavaScript.但是至于为什么会不能打包,表示很困惑,然后通过一番搜索,最后得出了问题 ...
- UglifyJS--javascript代码压缩使用指南{转}
在线测试地址 http://lisperator.net/uglifyjs/下面都是基于linux系统的安装使用.UglifyJS是遵循了CommonJS规范写成的,可以在支持CommonJS模块系统 ...
- fis代码压缩
Fis代码压缩步骤 1,安装fis(http://fis.baidu.com/fis3/docs/beginning/install.html) fis安装支持的node版本:0.8x,0.10x,0 ...
- [转]gulp排除已压缩文件思路
文章转载至[gulp排除已压缩文件思路] gulp默认排除语法的弊端 有个时候我们需要时用gulp排除已经压缩过的js,css等.如果以压缩文件是以".min.js"之类命名规范的 ...
- Asp.Net MVC 页面代码压缩筛选器-自定义删除无效内容
Asp.Net MVC 页面代码压缩筛选器 首先定义以下筛选器,用于代码压缩. /*页面压缩 筛选器*/ public class WhiteSpaceFilter : Stream { privat ...
- 如何利用Grunt生成对应的Source Map文件,线上代码压缩使用chrome浏览器便于调式
如何利用Grunt生成对应的Source Map文件,线上代码压缩使用chrome浏览器便于调式 首先我们来说说为何要生成sourceMap文件呢?简单的说,sourceMap是为了压缩后的代码调式提 ...
- apicloud代码压缩和全局加密
首先说代码压缩,因为没什么用,就先说它了.代码压缩后,apicloud里面的css和js文件里面的空格呀回车呀都去掉了,就是文件小了,所有代码显示为一行了.这些代码的变量没有重命名,我们知道jquer ...
- 用ildasm/ilasm修改IL代码(操作步骤)
在开发中遇到这样一个场景,需要修改一个dll文件(.NET程序集)中某些地方的类型名称,但没有源代码,只能修改IL代码. 操作步骤如下: 1. 运行ildasm ildasm是由微软提供的.NET程序 ...
随机推荐
- 时间函数DateTime()的用法
//2008年4月24日 System.DateTime.Now.ToString("D"); //2008-4-24 System.DateTime.Now.ToString(& ...
- UOJ Round #15 [构造 | 计数 | 异或哈希 kmp]
UOJ Round #15 大部分题目没有AC,我只是水一下部分分的题解... 225[UR #15]奥林匹克五子棋 题意:在n*m的棋盘上构造k子棋的平局 题解: 玩一下发现k=1, k=2无解,然 ...
- shared_ptr模版推导的问题
问题描述 今天在帮同事解决问题时,发现了这个比较有意思的现象,特记录下来备忘. 问题是这样的,同事开发的是应用程序动态库模块,通过应用的框架中以接口方式供外部使用.然后他想对这些接口生命周期进行控制, ...
- JDBC【数据库连接池、DbUtils框架、分页】
1.数据库连接池 什么是数据库连接池 简单来说:数据库连接池就是提供连接的... 为什么我们要使用数据库连接池 数据库的连接的建立和关闭是非常消耗资源的 频繁地打开.关闭连接造成系统性能低下 编写连接 ...
- HTTP入门
请求报文图解: 请求报文 图片 响应报文图解: 响应报文
- 炸金花的JS实现从0开始之 -------现在什么都不会(1)
新年结束了.回想起来唯一留下乐趣的就是在家和朋友玩玩炸金花. 遂有此文. 对不起,我这时候还没有思路. 让我捋一捋. ... ... 捋一捋啊... ... 好了.今天先这样吧: (1)先整理出所有的 ...
- Python基础——条件判断
Python版本:3.6.2 操作系统:Windows 作者:SmallWZQ 到目前为止,Python基础系列的文章中的程序都是一条一条语句顺序执行的.在本章中,我会重点介绍让程序选择是否执行语 ...
- 网卡name-eth1如何修改为eth0
正常来说,Linux在识别网卡时第一张会是eth0,第二张才是eth1. 有时候我们使用虚拟机克隆技术后网卡的信息就会改变,新克隆出来的虚拟主机网卡名字可能变为eth1.无论我们怎么修改都无法改变,这 ...
- python入门学习笔记(一)
写在开头: A:python的交互式环境 ...
- C#实现七牛云存储
云存储,就是把本地的资源文件存放至网络上,可以公网访问.相当于网盘功能,感觉非常方便. 这里介绍的是七牛云存储.有兴趣的可以去官方网站详看 根据官网的介绍,本身是提供SDK的,下载地址,大家可以根据自 ...