写gulp遇到的ES6问题详解


Posted in Javascript onDecember 03, 2018

前言

Gulp.js 是一个自动化构建工具,开发者可以使用它在项目开发过程中自动执行常见任务。最近复习一下gulp一些基本的写法,在写了一些简单的uglify,rename,concat,clean的处理之后,发现都还记得这些基本语法。然后无意间就想在demo中写下export function会变成怎样,结果发现gulp并不支持直接的es6语法,而且提示的错误也让人模棱两可。

events.js:182
 throw er; // Unhandled 'error' event
 ^
GulpUglifyError: unable to minify JavaScript

这着实让我头疼了一会,百度后才明白这是解析es6语法错误。

于是按照网上说的安装了gulp-babel,然后配置一个.babelrc的文件,再根据报错提示安装了@babel/core,结果发现编译是不报错了,但是编辑结果后的文件还是出不来。

gulp.task('miniJS', function(){
		 gulp.src(['demo.js', 'demo2.js'])
		 	.pipe(concat('demoFile.js'))
			.pipe(babel())
			.pipe(gulp.dest('./finalFile/'))
})

后来索性直接去了gulp-babel官网看,才明白3个月之前gulp-babel进行了更新,而我更新的是最新的gulp-babel包,而我搜索到的解决方法都是很早之前的,自然无法匹配。

官网提示方法:

# Babel 7
$ npm install --save-dev gulp-babel @babel/core @babel/preset-env

# Babel 6
$ npm install --save-dev gulp-babel@7 babel-core babel-preset-env

所以gulp-babel版本为8.0.0的只要安装如图的包就好了:

"@babel/core": "^7.1.6",
 "gulp-babel": "^8.0.0",
"@babel/preset-env": "^7.1.6",

这个 @babel/preset-env  包就算没有安装也并不会报错确实是坑,安装好需要的包后根据官网给的样例:

.pipe(babel({ 
   presets: ['@babel/env']  
  }))

同时需要去除掉创建的.babelrc文件,好像两者会有冲突,.babelrc文件存在的同时导致不会输出编译后的文件。这样一来export关键字就有用武之地了,但是在es6中

function demoFunc(){
 //something
}
export demoFunc;

这段代码是生效的,但是babel()好像认定是个解析不出的代码,不会解析输出文件,不知道是什么问题,我也处于懵逼中。

换成如下的方式是可以的:

export function demo(){
	console.log('this is the first gulp demo');
}
 export var num = {};

这样一来uglify就可以对es6进行解析了:

.pipe(babel({
	presets: ['@babel/env']
}))
.pipe(uglify())
.pipe(gulp.dest('file'))

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
jQuery EasyUI API 中文文档 - ValidateBox验证框
Oct 06 Javascript
使用jquery实现div的tab切换实例代码
May 27 Javascript
Jquery同辈元素选中/未选中效果的实例代码
Aug 01 Javascript
JavaScript子窗口调用父窗口变量和函数的方法
Oct 09 Javascript
浅析JavaScript作用域链、执行上下文与闭包
Feb 01 Javascript
手动初始化Angular的模块与控制器
Dec 26 Javascript
Vue-router路由判断页面未登录跳转到登录页面的实例
Oct 26 Javascript
vue+vuex+axios+echarts画一个动态更新的中国地图的方法
Dec 19 Javascript
jQuery访问json文件中数据的方法示例
Jan 28 jQuery
详解关于element级联选择器数据回显问题
Feb 20 Javascript
layer.confirm()右边按钮实现href的例子
Sep 27 Javascript
一起深入理解js中的事件对象
Feb 06 Javascript
使用mpvue搭建一个初始小程序及项目配置方法
Dec 03 #Javascript
JS基于Location实现访问Url、重定向及刷新页面的方法分析
Dec 03 #Javascript
koa2实现登录注册功能的示例代码
Dec 03 #Javascript
react-router 路由切换动画的实现示例
Dec 03 #Javascript
Vue.js 中的 v-model 指令及绑定表单元素的方法
Dec 03 #Javascript
ng-zorro-antd 入门初体验
Dec 03 #Javascript
如何使用 vue + d3 画一棵树
Dec 03 #Javascript
You might like
PHP中的正规表达式(一)
2006/10/09 PHP
解析php入库和出库
2013/06/25 PHP
PHP实现适用于文件内容操作的分页类
2016/06/15 PHP
php基于curl实现随机ip地址抓取内容的方法
2016/10/11 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
2018/06/14 PHP
php设计模式之装饰模式应用案例详解
2019/06/17 PHP
js replace替换所有匹配的字符串
2014/02/13 Javascript
js使用ajax读博客rss示例
2014/05/06 Javascript
ES6 Set结构的应用实例分析
2019/06/26 Javascript
非常漂亮的js烟花效果
2020/03/10 Javascript
jQuery实现tab栏切换效果
2020/12/22 jQuery
[05:13]2018DOTA2亚洲邀请赛主赛事第二日战况回顾 LGD、VG双雄携手晋级
2018/04/05 DOTA
Python多线程、异步+多进程爬虫实现代码
2016/02/17 Python
Python网络爬虫实例讲解
2016/04/28 Python
python 安装virtualenv和virtualenvwrapper的方法
2017/01/13 Python
轻量级的Web框架Flask 中模块化应用的实现
2017/09/11 Python
pycharm远程调试openstack代码
2017/11/21 Python
OpenCV2.3.1+Python2.7.3+Numpy等的配置解析
2018/01/05 Python
详解python分布式进程
2018/10/08 Python
python实现数据清洗(缺失值与异常值处理)
2019/12/02 Python
python 导入数据及作图的实现
2019/12/03 Python
python如何实现不可变字典inmutabledict
2020/01/08 Python
Django Auth用户认证组件实现代码
2020/10/13 Python
Adobe Html5 Extension开发初体验图文教程
2017/11/14 HTML / CSS
资深生产主管自我评价
2013/09/22 职场文书
计算机应用专业应届毕业生中文求职信范文
2013/11/29 职场文书
公务员培训自我鉴定
2014/02/01 职场文书
大学校园活动策划书
2014/02/04 职场文书
旅行社各个岗位职责
2014/03/15 职场文书
颁奖典礼主持词
2014/03/25 职场文书
党员一帮一活动总结
2014/07/08 职场文书
庆六一活动总结
2014/08/29 职场文书
2014年质量管理工作总结
2014/12/01 职场文书
写给父母的感谢信
2015/01/22 职场文书
雷锋电影观后感
2015/06/10 职场文书
会议室使用管理制度
2015/08/06 职场文书