一、安装步骤

  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进行代码压缩的步骤以及配置的更多相关文章

  1. 使用gulp进行代码压缩

    gulp是一个很不错的前端自动化工具,可以帮我们完成一些重复性操作,比如html.css和js代码的压缩.合并.混淆等,虽然这些操作可以通过一些在线工具帮我们实现,但不断重复地复制粘贴肯定比不上一句命 ...

  2. gulp做的前端代码压缩报错,揭示具体错误 信息

    用gulp做的前端代码压缩,今天在打包的时候发现打包出错了.报的错误是--unable to minify JavaScript.但是至于为什么会不能打包,表示很困惑,然后通过一番搜索,最后得出了问题 ...

  3. UglifyJS--javascript代码压缩使用指南{转}

    在线测试地址 http://lisperator.net/uglifyjs/下面都是基于linux系统的安装使用.UglifyJS是遵循了CommonJS规范写成的,可以在支持CommonJS模块系统 ...

  4. fis代码压缩

    Fis代码压缩步骤 1,安装fis(http://fis.baidu.com/fis3/docs/beginning/install.html) fis安装支持的node版本:0.8x,0.10x,0 ...

  5. [转]gulp排除已压缩文件思路

    文章转载至[gulp排除已压缩文件思路] gulp默认排除语法的弊端 有个时候我们需要时用gulp排除已经压缩过的js,css等.如果以压缩文件是以".min.js"之类命名规范的 ...

  6. Asp.Net MVC 页面代码压缩筛选器-自定义删除无效内容

    Asp.Net MVC 页面代码压缩筛选器 首先定义以下筛选器,用于代码压缩. /*页面压缩 筛选器*/ public class WhiteSpaceFilter : Stream { privat ...

  7. 如何利用Grunt生成对应的Source Map文件,线上代码压缩使用chrome浏览器便于调式

    如何利用Grunt生成对应的Source Map文件,线上代码压缩使用chrome浏览器便于调式 首先我们来说说为何要生成sourceMap文件呢?简单的说,sourceMap是为了压缩后的代码调式提 ...

  8. apicloud代码压缩和全局加密

    首先说代码压缩,因为没什么用,就先说它了.代码压缩后,apicloud里面的css和js文件里面的空格呀回车呀都去掉了,就是文件小了,所有代码显示为一行了.这些代码的变量没有重命名,我们知道jquer ...

  9. 用ildasm/ilasm修改IL代码(操作步骤)

    在开发中遇到这样一个场景,需要修改一个dll文件(.NET程序集)中某些地方的类型名称,但没有源代码,只能修改IL代码. 操作步骤如下: 1. 运行ildasm ildasm是由微软提供的.NET程序 ...

随机推荐

  1. HDU [P2819] swap

    二分图行列匹配+输出路径 经典题,当且仅当一行匹配一列的时候,符合题意. 本题的难点在于如何输出路径,我们发现这个移动的过程就是将所有匹配选择排序,在选择排序时输出路径即可 #include < ...

  2. 数组的复制及ES6数组的扩展

    一.数组的复制 // alert([1,2,3]==[1,2,3]); let cc = [0,1,2]; let dd = cc; alert(dd==cc);//此时改变dd会影响cc ES5 只 ...

  3. jQuery源码研究——怎么看源码

    废话 这几天有想看源码的想法,于是就开始了源码的研究,经过几天的摸索发现看源码还是有点技巧在里面的,想着把这些东东写下来作为一个小总结. 在一个多月前我对Vue源码进行了一次研究,那时看源码的方式基本 ...

  4. MongoDB之分片集群(Sharding)

    MongoDB之分片集群(Sharding) 一.基本概念 分片(sharding)是一个通过多台机器分配数据的方法.MongoDB使用分片支持大数据集和高吞吐量的操作.大数据集和高吞吐量的数据库系统 ...

  5. UEditor工具栏上自定义按钮、图标、事件和右击菜单添加自定义按钮

    首先我要说是,举例说的这个版本是1.2以上的,因为一些配置代码转移到了zh-cn.js里,其他没有变化.开门见山直接写:(我自定义的是在线美图功能) 第一步:找到ueditor.config.js文件 ...

  6. LeetCode - 492. Construct the Rectangle

    For a web developer, it is very important to know how to design a web page's size. So, given a speci ...

  7. 【考试】java基础知识测试,看你能得多少分?

    1 前言 共有5道java基础知识的单项选择题,每道20分,共计100分.解析和答案在最后. 2 试题 2.1 如下程序运行结果是什么? class Parent { public Parent(St ...

  8. CUP、内存、磁盘是如何在一起工作的

    IT技术发展到今天,计算机能做的事情可谓复杂的多.那么计算机是如何做出如此复杂的运算的呢? 不准确的说,计算机主要做两件事,数据计算和数据存储. 第一先说说计算机是如何计算的吧. 我们平时见到的所有计 ...

  9. 拥抱.NET Core系列:MemoryCache 缓存过期

    在上一篇"拥抱.NET Core系列:MemoryCache 初识"中我们基本了解了缓存的添加.删除.获取,那么今天我们来看看缓存的过期机制.这里和上篇一样将把"Micr ...

  10. SDK编程之多线程编程

    本课中,我们将学习如何进行多线程编程.另外我们还将学习如何在不同的线程间进行通信. 理论:前一课中,我们学习了进程,其中讲到每一个进程至少要有一个主线程.这个线程其实是进程执行的一条线索,除此主线程外 ...