gulp-uglify 与gulp.watch()配合使用时报错(重复压缩问题)


Posted in Javascript onAugust 24, 2016

gulp简介:

gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器;她不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成;使用她,我们不仅可以很愉快的编写代码,而且大大提高我们的工作效率。

gulp是基于Nodejs的自动任务运行器, 她能自动化地完成 javascript/coffee/sass/less/html/image/css 等文件的的测试、检查、合并、压缩、格式化、浏览器自动刷新、部署文件生成,并监听文件在改动后重复指定的这些步骤。在实现上,她借鉴了Unix操作系统的管道(pipe)思想,前一级的输出,直接变成后一级的输入,使得在操作上非常简单。通过本文,我们将学习如何使用Gulp来改变开发流程,从而使开发更加快速高效。

gulp 和 grunt 非常类似,但相比于 grunt 的频繁 IO 操作,gulp 的流操作,能更快地更便捷地完成构建工作。

今天学习gulp时候,用到gulp-uglify压缩js模块,遇到的一个问题-当用gulp.watch来监听js文件的变动时出现重复压缩的问题

目录结构如下:

gulp-uglify 与gulp.watch()配合使用时报错(重复压缩问题)

gulpfile.js代码如下:

var gulp = require('gulp');
var uglify = require('gulp-uglify'); 
var rename = require('gulp-rename');
gulp.task('uglify', function() {
gulp.src('./src/js/*.js')
.pipe(rename({suffix:'.min'}))
.pipe(uglify())
.pipe(gulp.dest('./src/js'));
});
var watcher = gulp.watch('./src/js/*.js', ['uglify']);
watcher.on('change', function(event) {
console.log('File ' + event.path + ' was ' + event.type + ', running tasks...');
});

执行gulp uglify命令后:

gulp-uglify 与gulp.watch()配合使用时报错(重复压缩问题)

也生成了对应的*.min.js:

gulp-uglify 与gulp.watch()配合使用时报错(重复压缩问题)

但是当我打开一个kong.js文件重新保存后,会出现下面的情况:

gulp-uglify 与gulp.watch()配合使用时报错(重复压缩问题)

保存一次就会重新压缩一遍,会出现很多*.min.min...js之类的js压缩文件,而且只有第一个kong.min.js值会跟着kong.js改变而改变,后来查了下文档,别人写有关gulp-uglify的内容,发现可以用!来筛除掉min.js,不让它压缩,更改后的代码:

var gulp = require('gulp');
var uglify = require('gulp-uglify'); 
var rename = require('gulp-rename');
gulp.task('uglify', function() {
gulp.src(['./src/js/*.js','!./src/js/*.min.js'])
.pipe(rename({suffix:'.min'}))
.pipe(uglify())
.pipe(gulp.dest('./src/js'));
});
var watcher = gulp.watch('./src/js/*.js', ['uglify']);
watcher.on('change', function(event) {
console.log('File ' + event.path + ' was ' + event.type + ', running tasks...');
});

以上所述是小编给大家介绍的gulp-uglify 与gulp.watch()配合使用时报错(重复压缩问题),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript css styleFloat和cssFloat
Mar 15 Javascript
一个JS的日期格式化算法示例
Jul 31 Javascript
JS自调用匿名函数具体实现
Feb 11 Javascript
JS对文本框值的判断示例
Mar 10 Javascript
Javascript添加监听与删除监听用法详解
Dec 19 Javascript
js实现同一页面可多次调用的图片幻灯切换效果
Feb 28 Javascript
JavaScript的jQuery库中function的存在和参数问题
Aug 13 Javascript
JQuery为元素添加样式的实现方法
Jul 20 Javascript
JS实现兼容火狐及IE iframe onload属性的遮罩层隐藏及显示效果
Aug 23 Javascript
jQuery实现动态生成表格并为行绑定单击变色动作的方法
Apr 17 jQuery
node+koa实现数据mock接口的方法
Sep 20 Javascript
React 组件中的 bind(this)示例代码
Sep 16 Javascript
JS判断是否在微信浏览器打开的简单实例(推荐)
Aug 24 #Javascript
jquery实现ajax提交表单信息的简单方法(推荐)
Aug 24 #Javascript
AngularJS下对数组的对比分析
Aug 24 #Javascript
AngularJS  $modal弹出框实例代码
Aug 24 #Javascript
AngularJS中比较两个数组是否相同
Aug 24 #Javascript
javascript深拷贝(deepClone)详解
Aug 24 #Javascript
js实现无缝循环滚动
Jun 23 #Javascript
You might like
深入phpMyAdmin的安装与配置的详细步骤
2013/05/07 PHP
关于php循环跳出的问题
2013/07/01 PHP
分享五个PHP7性能优化提升技巧
2015/12/07 PHP
php实现URL加密解密的方法
2016/11/17 PHP
php实现基于PDO的预处理示例
2017/03/28 PHP
js prototype 格式化数字 By shawl.qiu
2007/04/02 Javascript
JQUERY的属性选择符和自定义选择符使用方法(二)
2011/04/07 Javascript
innerText和textContent对比及使用介绍
2013/02/27 Javascript
input输入框的自动匹配(原生代码)
2013/03/19 Javascript
Javascript基础教程之函数对象和属性
2015/01/18 Javascript
jQuery.ajax 跨域请求webapi设置headers的解决方案
2016/08/08 Javascript
javascript中BOM基础知识总结
2017/02/14 Javascript
JS排序之快速排序详解
2017/04/08 Javascript
vue.js内部自定义指令与全局自定义指令的实现详解(利用directive)
2017/07/11 Javascript
JS实现自定义状态栏动画文字效果示例
2017/10/12 Javascript
ReactNative中使用Redux架构总结
2017/12/15 Javascript
vue项目中将element-ui table表格写成组件的实现代码
2019/06/12 Javascript
在vant中使用时间选择器和popup弹出层的操作
2020/11/04 Javascript
python字典多条件排序方法实例
2014/06/30 Python
python爬虫入门教程之点点美女图片爬虫代码分享
2014/09/02 Python
OPENCV去除小连通区域,去除孔洞的实例讲解
2018/06/21 Python
代码详解django中数据库设置
2019/01/28 Python
文件上传服务器-jupyter 中python解压及压缩方式
2020/04/22 Python
详解CSS3伸缩布局盒模型Flex布局
2018/08/20 HTML / CSS
巴西补充剂和维生素购物网站:Natue
2019/06/17 全球购物
奥地利婴儿用品和玩具购物网站:baby-markt.at
2020/01/26 全球购物
工程造价与财务管理专业应届生求职信
2013/10/06 职场文书
开办加工厂创业计划书
2014/01/03 职场文书
秋季红领巾广播稿
2014/01/27 职场文书
语文教学随笔感言
2014/02/18 职场文书
公司年终奖分配方案
2014/06/16 职场文书
车贷收入证明范本
2014/09/14 职场文书
勤俭节约倡议书范文
2015/04/29 职场文书
利用前端HTML+CSS+JS开发简单的TODOLIST功能(记事本)
2021/04/13 Javascript
Nginx反向代理、重定向
2022/04/13 Servers
Rust中的Struct使用示例详解
2022/08/14 Javascript