JS中使用gulp实现压缩文件及浏览器热加载功能


Posted in Javascript onJuly 12, 2017

gulp类似于grunt,都是基于Node.js的前端构建工具。不过gulp压缩效率更高。

一.安装gulp

首先,你要安装过nodejs,如果没有安装过的同学请自行下载。  先再命令行里输入   npm install gulp -g   下载gulp

二.创建gulp项目

创建一个你需要项目文件夹,然后在根目录输入  npm init  (npm init命令会为你创建一个package.json文件,这个文件保存着这个项目相关信息。比如你用到的各种依赖)

三.使用npm install 安装各种依赖

例:

npm install browser-sync--save-dev

JS中使用gulp实现压缩文件及浏览器热加载功能

这里总共用到了这些依赖,请自行下载   具体各自都有什么用 后面会具体介绍。

四.编写gulpfile.js

首先,声明这些依赖

JS中使用gulp实现压缩文件及浏览器热加载功能

然后我们就要开始最重要的工作了,配置这些依赖

1.配置压缩css

 JS中使用gulp实现压缩文件及浏览器热加载功能

2.配置压缩js

JS中使用gulp实现压缩文件及浏览器热加载功能

3.配置压缩img

JS中使用gulp实现压缩文件及浏览器热加载功能

4.配置html,这里没有进行压缩,感觉没有压缩的必要 (纯属见仁见智)

JS中使用gulp实现压缩文件及浏览器热加载功能

5.配置清楚文件,因为每次打包都会生成新文件  所以在这之前要把之前的文件给清除掉

JS中使用gulp实现压缩文件及浏览器热加载功能

6.配置浏览器热加载

JS中使用gulp实现压缩文件及浏览器热加载功能

7.配置打包  

JS中使用gulp实现压缩文件及浏览器热加载功能

这里的runSequence是指能同时执行多个命令

8.设置gulp启动时执行哪些配置

JS中使用gulp实现压缩文件及浏览器热加载功能

最后放上全部代码 供大家参考

var gulp = require('gulp');
var sass = require('gulp-sass');
var browserSync = require('browser-sync');
var uglify = require('gulp-uglify');
var imagemin = require('gulp-imagemin');
var minifyCSS = require('gulp-minify-css');
var cache = require('gulp-cache');
var del = require('del');
var runSequence = require('run-sequence');
var minifyHtml= require("gulp-minify-html");
gulp.task('sass', function(){  //打包sass
 return gulp.src('app/scss/**/*.scss')
  .pipe(sass()) // Converts Sass to CSS with gulp-sass
  .pipe(gulp.dest('app/css'))
  .pipe(browserSync.reload({
   stream: true
  }))
});
gulp.task('js',function() {
  gulp.src('app/**/*.js')
  .pipe(uglify())//压缩
  .pipe(gulp.dest('dist'));
});
gulp.task('css', function () {
  gulp.src('app/css/*.css')
  .pipe(minifyCSS())
  .pipe(gulp.dest('dist/css'))
})
gulp.task('minify-html',function() {
   gulp.src('app/**/*.html')//要压缩的html文件
   .pipe(gulp.dest('dist'));
});
gulp.task('images', function(){
 return gulp.src('app/images/**/*.+(png|jpg|jpeg|gif|svg)')
 // Caching images that ran through imagemin
 .pipe(cache(imagemin({
   interlaced: true
  })))
 .pipe(gulp.dest('dist/images'))
});
gulp.task('clean', function(callback) {
 del('dist');
 return cache.clearAll(callback);
});
gulp.task('watch',['browserSync', 'sass'],function(){  //我们可以在watch任务之前告知Gulp,先把browserSync和Sass任务执行了再说。
 gulp.watch('app/scss/**/*.scss', ['sass']);
 gulp.watch('app/*.html', browserSync.reload);
 gulp.watch('app/js/**/*.js', browserSync.reload);
 // Other watchers
});
gulp.task('browserSync', function() { //浏览器热加载
 browserSync({
  server: {
   baseDir: 'app'
  },
 })
});
gulp.task('build', function (callback) {
 runSequence('clean',['minify-html','js','images','css'],callback)
});
gulp.task('default', function (callback) {
 runSequence(['sass','browserSync', 'watch'],
  callback
 )
});

以上所述是小编给大家介绍的JS中使用gulp实现压缩文件及浏览器热加载功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript实现unicode和字符的互相转换
Jul 18 Javascript
jquery中的mouseleave和mouseout的区别 模仿下拉框效果
Feb 07 Javascript
解决js正则匹配换行问题实现代码
Dec 10 Javascript
Jquery 返回json数据在IE浏览器中提示下载的问题
May 18 Javascript
javascript数组操作方法小结和3个属性详细介绍
Jul 05 Javascript
JavaScript的设计模式经典之建造者模式
Feb 24 Javascript
JavaScript常用判断写法大全(推荐)
May 30 Javascript
webpack-dev-server远程访问配置方法
Feb 22 Javascript
json前后端数据交互相关代码
Sep 19 Javascript
layer.prompt输入层的例子
Sep 24 Javascript
详解vue-template-admin三级路由无法缓存的解决方案
Mar 10 Javascript
JavaScript常用进制转换及位运算实例解析
Oct 14 Javascript
Vue中的数据监听和数据交互案例解析
Jul 12 #Javascript
js 监控iframe URL的变化实例代码
Jul 12 #Javascript
jQuery 循环遍历改变a标签的href(实例讲解)
Jul 12 #jQuery
浅谈原生JS中的延迟脚本和异步脚本
Jul 12 #Javascript
基于zepto.js实现手机相册功能
Jul 11 #Javascript
React-Native实现ListView组件之上拉刷新实例(iOS和Android通用)
Jul 11 #Javascript
详解Webpack DLL用法以及功能
Jul 11 #Javascript
You might like
PHP数组的交集array_intersect(),array_intersect_assoc(),array_inter_key()函数的小问题
2011/05/29 PHP
php通过array_push()函数添加多个变量到数组末尾的方法
2015/03/18 PHP
Yii实现单用户博客系统文章详情页插入评论表单的方法
2015/12/28 PHP
JQuery Ajax通过Handler访问外部XML数据的代码
2010/06/01 Javascript
固定网页背景图同时保持图片比例的思路代码
2013/08/15 Javascript
JS+CSS实现滑动切换tab菜单效果
2015/08/25 Javascript
js实现微信分享代码
2020/10/11 Javascript
强大Vue.js组件浅析
2016/09/12 Javascript
Vue关于数据绑定出错解决办法
2017/05/15 Javascript
JS实现发送短信验证后按钮倒计时功能(防止刷新倒计时失效)
2017/07/07 Javascript
前端把html表格生成为excel表格的实例
2017/09/19 Javascript
JavaScript页面倒计时功能完整示例
2019/05/15 Javascript
原生js实现贪食蛇小游戏的思路详解
2019/11/26 Javascript
JavaScript canvas绘制圆弧与圆形
2020/02/18 Javascript
jQuery+ThinkPHP实现图片上传
2020/07/23 jQuery
[56:56]VG vs LGD 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.22
2019/09/05 DOTA
一个超级简单的python web程序
2014/09/11 Python
浅谈python函数之作用域(python3.5)
2017/10/27 Python
Selenium鼠标与键盘事件常用操作方法示例
2018/08/13 Python
python多进程控制学习小结
2018/10/31 Python
python判断计算机是否有网络连接的实例
2018/12/15 Python
详解Python用三种方式统计词频的方法
2019/07/29 Python
重写django的model下的objects模型管理器方式
2020/05/15 Python
python爬虫泛滥的解决方法详解
2020/11/25 Python
HTML5+CSS3:3D展示商品信息示例
2017/01/03 HTML / CSS
中国茶叶、茶具一站式网上购物商城:醉品茶城
2018/07/03 全球购物
流行文化收藏品:Sideshow(DC漫画,星球大战,漫威)
2019/03/17 全球购物
俄罗斯购买自行车网站:Vamvelosiped
2021/01/29 全球购物
印度电子产品购物网站:Vijay Sales
2021/02/16 全球购物
保险专业自荐信范文
2014/02/20 职场文书
艾滋病宣传标语
2014/06/25 职场文书
2015年教师党员自我评价材料
2015/03/04 职场文书
校长师德表现自我评价
2015/03/04 职场文书
投资入股协议书
2016/03/22 职场文书
nginx负载功能+nfs服务器功能解析
2022/02/28 Servers
python神经网络 tf.name_scope 和 tf.variable_scope 的区别
2022/05/04 Python