写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 构建一个xmlhttp对象池合理创建和使用xmlhttp对象
Jan 15 Javascript
限制文本框输入N个字符的js代码
May 13 Javascript
jQuery右键菜单contextMenu使用实例
Sep 28 Javascript
不使用浏览器运行javascript代码的方法
Jul 24 Javascript
js通过location.search来获取页面传来的参数
Sep 11 Javascript
js实现简洁的滑动门菜单(选项卡)效果代码
Sep 04 Javascript
react-native-fs实现文件下载、文本存储的示例代码
Sep 22 Javascript
vue-cli 目录结构详细讲解总结
Jan 15 Javascript
JavaScript中十种一步拷贝数组的方法实例详解
Apr 22 Javascript
JS实现贪吃蛇游戏
Nov 15 Javascript
Ant Design的Table组件去除
Oct 24 Javascript
vue实现简易音乐播放器
Aug 14 Vue.js
使用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+SQL 注入攻击的技术实现以及预防办法
2010/12/29 PHP
PHP下的浮点运算不准的解决方法
2016/10/27 PHP
PHP中模糊查询并关联三个select框
2017/06/19 PHP
基于PHP实现用户在线状态检测
2020/11/10 PHP
javascript操作cookie_获取与修改代码
2009/05/21 Javascript
jQuery学习7 操作JavaScript对象和集合的函数
2010/02/07 Javascript
一个简单的JavaScript数据缓存系统实现代码
2010/10/24 Javascript
Webkit的跨域安全问题说明
2011/09/13 Javascript
javascript setTimeout和setInterval计时的区别详解
2013/06/21 Javascript
基于JavaScript实现一定时间后去执行一个函数
2015/12/14 Javascript
JS小数运算出现多为小数问题的解决方法
2016/06/02 Javascript
Vue.js组件tabs实现选项卡切换效果
2016/12/01 Javascript
jQuery使用unlock.js插件实现滑动解锁
2017/04/04 jQuery
微信小程序异步API为Promise简化异步编程的操作方法
2018/08/14 Javascript
解决IE11 vue +webpack 项目中数据更新后页面没有刷新的问题
2018/09/25 Javascript
利用原生JS实现data方法示例代码
2019/05/28 Javascript
[01:19:35]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第二局
2016/03/05 DOTA
[01:07:17]EG vs Optic Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
python生成随机验证码(中文验证码)示例
2014/04/03 Python
解决Python中list里的中文输出到html模板里的问题
2018/12/17 Python
python3+selenium实现126邮箱登陆并发送邮件功能
2019/01/23 Python
使用python itchat包爬取微信好友头像形成矩形头像集的方法
2019/02/21 Python
CentOS7下安装python3.6.8的教程详解
2020/01/03 Python
使用python绘制cdf的多种实现方法
2020/02/25 Python
python实现微信打飞机游戏
2020/03/24 Python
Python基于time模块表示时间常用方法
2020/06/18 Python
CSS3中Transition动画属性用法详解
2016/07/04 HTML / CSS
Casadei卡萨蒂官网:意大利奢侈鞋履品牌
2017/10/28 全球购物
Booking.com缤客中国:全球酒店在线预订网站
2020/05/03 全球购物
优秀少先队大队辅导员事迹材料
2014/05/04 职场文书
“四风”查摆问题自我剖析材料
2014/09/27 职场文书
2015年班级工作总结范文
2015/04/03 职场文书
廉洁自律承诺书范文
2015/04/28 职场文书
2015年街道除四害工作总结
2015/05/15 职场文书
Python爬虫数据的分类及json数据使用小结
2021/03/29 Python
Python数据处理的三个实用技巧分享
2022/04/01 Python