写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 相关文章推荐
图片自动更新(说明)
Oct 02 Javascript
jquery多行滚动/向左或向上滚动/响应鼠标实现思路及代码
Jan 23 Javascript
jQuery背景插件backstretch使用指南
Apr 21 Javascript
详解Bootstrap创建表单的三种格式(一)
Jan 04 Javascript
TypeOf这些知识点你了解吗
Feb 21 Javascript
移动端H5开发 Turn.js实现很棒的翻书效果
Jun 20 Javascript
Vue.js 2.0 移动端拍照压缩图片上传预览功能
Mar 06 Javascript
Linux系统中利用node.js提取Word(doc/docx)及PDF文本的内容
Jun 17 Javascript
使用Vue如何写一个双向数据绑定(面试常见)
Apr 20 Javascript
laravel-admin 与 vue 结合使用实例代码详解
Jun 04 Javascript
package.json各个属性说明详解
Mar 11 Javascript
微信小程序中target和currentTarget的区别小结
Nov 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与XML的PDF文档生成技术
2006/10/09 PHP
phpmyadmin 常用选项设置详解版
2010/03/07 PHP
php学习笔记 数组遍历实现代码
2011/06/09 PHP
php数组函数序列 之array_count_values() 统计数组中所有值出现的次数函数
2011/10/29 PHP
PHP支持多种格式图片上传(支持jpg、png、gif)
2011/11/03 PHP
PHP中的gzcompress、gzdeflate、gzencode函数详解
2014/07/29 PHP
PHP 正则表达式常用函数
2014/08/17 PHP
CentOS安装php v8js教程
2015/02/26 PHP
php中有关合并某一字段键值相同的数组合并的改进
2015/03/10 PHP
php中分页及SqlHelper类用法实例
2017/01/12 PHP
php连接MSsql server的五种方法总结
2018/03/04 PHP
详解PHP神奇又有用的Trait
2019/03/25 PHP
搭建PhpStorm+PhpStudy开发环境的超详细教程
2020/09/17 PHP
javascript 写类方式之四
2009/07/05 Javascript
jQuery 联动日历实现代码
2012/05/31 Javascript
jQuery实现转动随机数抽奖效果的方法
2015/05/21 Javascript
jquery实现ajax加载超时提示的方法
2016/07/23 Javascript
Bootstrap基本插件学习笔记之标签切换(17)
2016/12/08 Javascript
js通过keyCode值判断单击键盘上某个键,然后触发指定的事件方法
2017/02/19 Javascript
Vue.js实现模拟微信朋友圈开发demo
2017/04/20 Javascript
React从react-router路由上做登陆验证控制的方法
2018/05/10 Javascript
vue地址栏直接输入路由无效问题的解决
2018/11/15 Javascript
微信小程序如何获取用户头像和昵称
2019/09/23 Javascript
使用Python脚本将绝对url替换为相对url的教程
2015/04/24 Python
Linux中安装Python的交互式解释器IPython的教程
2016/06/13 Python
python中subprocess批量执行linux命令
2018/04/27 Python
python模拟实现斗地主发牌
2020/01/07 Python
python tqdm 实现滚动条不上下滚动代码(保持一行内滚动)
2020/02/19 Python
Java Unsafe类实现原理及测试代码
2020/09/15 Python
用python获取txt文件中关键字的数量
2020/12/24 Python
运动会广播稿400字
2014/01/25 职场文书
医院检讨书范文
2014/02/01 职场文书
亲子拓展活动方案
2014/02/20 职场文书
书香家庭事迹材料
2014/05/09 职场文书
SpringBoot集成Druid连接池连接MySQL8.0.11
2021/07/02 Java/Android
分享五个Node.js开发的优秀实践 
2022/04/07 NodeJs