写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下的keyCode键码值表
Apr 10 Javascript
再谈javascript 动态添加样式规则 W3C校检
Dec 25 Javascript
跟着JQuery API学Jquery 之二 属性
Apr 09 Javascript
用JavaScript对JSON进行模式匹配 (Part 2 - 实现)
Jul 17 Javascript
将json对象转换为字符串的方法
Feb 20 Javascript
Jquery实现Div上下移动示例
Apr 23 Javascript
jQuery知识点整理
Jan 30 Javascript
基于jQuery+JSON的省市二三级联动效果
Jun 05 Javascript
AngularJS指令与控制器之间的交互功能示例
Dec 14 Javascript
微信小程序之判断页面滚动方向的示例代码
Aug 30 Javascript
Vuex的实战使用详解
Oct 31 Javascript
Jquery 获取相同NAME 或者id删除行操作
Aug 24 jQuery
使用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提取数据库内容中的图片地址并循环输出
2010/03/21 PHP
PHP Undefined index报错的修复方法
2011/07/17 PHP
探讨:parse url解析URL,返回其组成部分
2013/06/14 PHP
php中有关合并某一字段键值相同的数组合并的改进
2015/03/10 PHP
Yii2组件之多图上传插件FileInput的详细使用教程
2016/06/20 PHP
PHP实现的简单路由和类自动加载功能
2018/03/13 PHP
JavaScript 中的replace方法说明
2007/04/13 Javascript
可以支持多中格式的JS键盘
2007/05/02 Javascript
JavaScript接口实现代码 (Interfaces In JavaScript)
2010/06/11 Javascript
jquery使用jquery.zclip插件复制对象的实例教程
2013/12/04 Javascript
js购物车实现思路及代码(个人感觉不错)
2013/12/23 Javascript
JavaScript Math.round() 方法
2015/12/18 Javascript
微信小程序实现顶部普通选项卡效果(非swiper)
2020/06/19 Javascript
nodejs操作mongodb的增删改查功能实例
2017/11/09 NodeJs
vue源码解析之事件机制原理
2018/04/21 Javascript
Electron 如何调用本地模块的方法
2019/02/01 Javascript
javascript实现动态时钟的启动和停止
2020/07/29 Javascript
浅析JavaScript预编译和暗示全局变量
2020/09/03 Javascript
在vue中配置不同的代理同时访问不同的后台操作
2020/09/11 Javascript
[58:32]EG vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
利用Python的装饰器解决Bottle框架中用户验证问题
2015/04/24 Python
用Python实现web端用户登录和注册功能的教程
2015/04/30 Python
Python3写入文件常用方法实例分析
2015/05/22 Python
Python中模块string.py详解
2017/03/12 Python
python使用rpc框架gRPC的方法
2018/08/24 Python
python 3.7.0 下pillow安装方法
2018/08/27 Python
详解将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法
2019/07/06 Python
softmax及python实现过程解析
2019/09/30 Python
解决IDEA 的 plugins 搜不到任何的插件问题
2020/05/04 Python
带你认识HTML5中的WebSocket
2015/05/22 HTML / CSS
趣天网日本站:Qoo10 JP
2019/09/18 全球购物
工程概预算专业毕业生求职信
2013/10/04 职场文书
预备党员转正考核材料
2014/06/03 职场文书
职业生涯规划书怎么写?
2014/09/14 职场文书
社区公民道德宣传日活动总结
2015/03/23 职场文书
python中的mysql数据库LIKE操作符详解
2021/07/01 MySQL