写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 CHECKBOX全选,取消全选,反选方法三
Aug 30 Javascript
使用SyntaxHighlighter实现HTML高亮显示代码的方法
Feb 04 Javascript
文字不间断滚动(上下左右)实例代码
Apr 21 Javascript
jQuery对JSON数据进行排序输出的方法
Jun 24 Javascript
AngularJS 中的指令实践开发指南(一)
Mar 20 Javascript
JQuery 两种方法解决刚创建的元素遍历不到的问题
Apr 13 Javascript
Vue.js 2.0 移动端拍照压缩图片上传预览功能
Mar 06 Javascript
js实现继承的方法及优缺点总结
May 08 Javascript
微信小程序发布新版本时自动提示用户更新的方法
Jun 07 Javascript
webpack是如何实现模块化加载的方法
Nov 06 Javascript
js实现烟花特效
Mar 02 Javascript
Vue单文件组件开发实现过程详解
Jul 30 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
全国FM电台频率大全 - 19 广东省
2020/03/11 无线电
php加密解密实用类分享
2014/01/07 PHP
php微信公众平台开发类实例
2015/04/01 PHP
Yii数据库缓存实例分析
2016/03/29 PHP
thinkphp框架实现删除和批量删除
2016/06/29 PHP
PHP中ajax无刷新上传图片与图片下载功能
2017/02/21 PHP
jQuery UI Autocomplete 1.8.16 中文输入修正代码
2012/04/16 Javascript
Javascript 面向对象(一)(共有方法,私有方法,特权方法)
2012/05/23 Javascript
script的async属性以非阻塞的模式加载脚本
2013/01/15 Javascript
jquery中radio checked问题
2015/03/16 Javascript
jQuery中Ajax全局事件引用方式及各个事件(全局/局部)执行顺序
2016/06/02 Javascript
JS实现的随机排序功能算法示例
2017/06/09 Javascript
AngularJs 最新验证手机号码的实例,成功测试通过
2017/11/26 Javascript
React Native基础入门之调试React Native应用的一小步
2018/07/02 Javascript
vue实现商品加减计算总价的实例代码
2018/08/12 Javascript
node+multer实现图片上传的示例代码
2020/02/18 Javascript
jQuery实现的分页插件完整示例
2020/05/26 jQuery
使用Mock.js生成前端测试数据
2020/12/13 Javascript
wxPython窗口的继承机制实例分析
2014/09/28 Python
Python通过Django实现用户注册和邮箱验证功能代码
2017/12/11 Python
微信跳一跳辅助python代码实现
2018/01/05 Python
python 处理dataframe中的时间字段方法
2018/04/10 Python
破解安装Pycharm的方法
2018/10/19 Python
利用ctypes获取numpy数组的指针方法
2019/02/12 Python
详解Python3中ceil()函数用法
2019/02/19 Python
Python实现KNN(K-近邻)算法的示例代码
2019/03/05 Python
对PyQt5的输入对话框使用(QInputDialog)详解
2019/06/25 Python
python 命令行传入参数实现解析
2019/08/30 Python
会计专业毕业生自我鉴定
2013/10/29 职场文书
高中打架检讨书
2014/02/13 职场文书
学习十八届四中全会精神思想汇报
2014/10/23 职场文书
青年文明号申报材料
2014/12/23 职场文书
2015年教研室工作总结范文
2015/05/23 职场文书
2016年寒假社会实践活动心得体会
2015/10/09 职场文书
2016猴年春节慰问信
2015/11/30 职场文书
2016年村党支部公开承诺书
2016/03/24 职场文书