写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 相关文章推荐
Javascript 兼容firefox的一些问题
May 21 Javascript
jQuery ajax BUG:object doesn't support this property or method
Jul 06 Javascript
用JS做的简单的可折叠的两级树形菜单
Sep 21 Javascript
JS清空多文本框、文本域示例代码
Feb 24 Javascript
关于js原型的面试题讲解
Sep 25 Javascript
webpack vue项目开发环境局域网访问方法
Mar 20 Javascript
JS实现区分中英文并统计字符个数的方法示例
Jun 09 Javascript
Vue实现简易翻页效果源码分享
Nov 08 Javascript
element-ui组件table实现自定义筛选功能的示例代码
Mar 15 Javascript
浅谈redux, koa, express 中间件实现对比解析
May 23 Javascript
Vue-cli3.x + axios 跨域方案踩坑指北
Jul 04 Javascript
javascript中导出与导入实现模块化管理教程
Dec 03 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
编写漂亮的代码 - 将后台程序与前端程序分开
2008/04/23 PHP
PHP入门学习的几个不错的实例代码
2008/07/13 PHP
PHP 5.3.0 安装分析心得
2009/08/07 PHP
php实现购物车功能(下)
2016/01/05 PHP
ThinkPHP中获取指定日期后工作日的具体日期方法
2018/10/14 PHP
Javascript写了一个清除“logo1_.exe”的杀毒工具(可扫描目录)
2007/02/09 Javascript
JS上传前预览图片实例
2013/03/25 Javascript
javascript按位非运算符的使用方法
2013/11/14 Javascript
js实现按Ctrl+Enter发送效果
2014/09/18 Javascript
使用jQuery实现验证上传图片的格式与大小
2014/12/03 Javascript
解析javascript中鼠标滚轮事件
2015/05/26 Javascript
jQuery里filter()函数与find()函数用法分析
2015/06/24 Javascript
js实现兼容IE、Firefox的图片缩放代码
2015/12/08 Javascript
javascript实现页面滚屏效果
2017/01/17 Javascript
js 输入框 正则表达式(菜鸟必看教程)
2017/02/19 Javascript
BackBone及其实例探究_动力节点Java学院整理
2017/07/14 Javascript
Vuejs 页面的区域化与组件封装的实现
2017/09/11 Javascript
Angular4.0中引入laydate.js日期插件的方法教程
2017/12/25 Javascript
微信小程序实现上拉加载功能
2019/11/20 Javascript
[50:28]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Newbee vs KG
2018/04/01 DOTA
Python程序设计入门(5)类的使用简介
2014/06/16 Python
python2.6.6如何升级到python2.7.14
2018/04/08 Python
Linux下远程连接Jupyter+pyspark部署教程
2019/06/21 Python
Python处理时间日期坐标轴过程详解
2019/06/25 Python
python实现微信自动回复机器人功能
2019/07/11 Python
django xadmin中form_layout添加字段显示方式
2020/03/30 Python
python时间序列数据转为timestamp格式的方法
2020/08/03 Python
基于Django集成CAS实现流程详解
2020/11/28 Python
亚马逊西班牙购物网站:amazon西班牙
2017/03/06 全球购物
办公室副主任岗位职责
2013/11/25 职场文书
会计找工作求职信范文
2013/12/09 职场文书
教师岗位职责范本
2013/12/29 职场文书
2015年小学一年级班主任工作总结
2015/05/21 职场文书
认识实习感想
2015/08/10 职场文书
创业计划书之儿童理发店
2019/09/27 职场文书
Mysql中mvcc各场景理解应用
2022/08/05 MySQL