写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 相关文章推荐
js实现文件上传表单域美化特效
Nov 02 Javascript
js下将金额数字每三位一逗号分隔
Feb 19 Javascript
Easyui Treegrid改变默认图标的方法
Apr 29 Javascript
Angularjs在初始化未完毕时出现闪烁问题的解决方法分析
Aug 05 Javascript
JS实现购物车特效
Feb 02 Javascript
js 实现获取name 相同的页面元素并循环遍历的方法
Feb 14 Javascript
详谈AngularJs 控制器、数据绑定、作用域
Jul 09 Javascript
微信小程序实现全局搜索代码高亮的示例
Mar 30 Javascript
vue axios数据请求get、post方法及实例详解
Sep 11 Javascript
VUE接入腾讯验证码功能(滑块验证)备忘
May 07 Javascript
Javascript模拟实现new原理解析
Mar 03 Javascript
Vue 中如何将函数作为 props 传递给组件的实现代码
May 12 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学习 变量使用总结
2011/03/24 PHP
PHP性能优化 产生高度优化代码
2011/07/22 PHP
PHP设计模式 注册表模式
2012/02/05 PHP
php+mysqli事务控制实现银行转账实例
2015/01/29 PHP
php编写批量生成不重复的卡号密码代码
2015/05/14 PHP
Add Formatted Text to a Word Document
2007/06/15 Javascript
基于jquery的blockui插件显示弹出层
2011/04/14 Javascript
JavaScript面向对象编程入门教程
2014/04/16 Javascript
javascript解三阶幻方(九宫格)
2015/04/22 Javascript
Js的Array数组对象详解
2016/02/22 Javascript
实例详解ECMAScript5中新增的Array方法
2016/04/05 Javascript
JavaScript动态生成二维码图片
2016/04/20 Javascript
javascript 判断一个对象为数组的方法
2017/05/03 Javascript
一个简单的node.js界面实现方法
2018/06/01 Javascript
vue2.0项目实现路由跳转的方法详解
2018/06/21 Javascript
layui富文本编辑器前端无法取值的解决方法
2019/09/18 Javascript
vue 动态表单开发方法案例详解
2019/12/02 Javascript
vue实现点击按钮切换背景颜色的示例代码
2020/06/23 Javascript
js实现类选择器和name属性选择器的示例步骤
2021/02/07 Javascript
Pyhthon中使用compileall模块编译源文件为pyc文件
2015/04/28 Python
Python 装饰器使用详解
2017/07/29 Python
用python 实现在不确定行数情况下多行输入方法
2019/01/28 Python
python3 tkinter实现点击一个按钮跳出另一个窗口的方法
2019/06/13 Python
python飞机大战pygame游戏框架搭建操作详解
2019/12/17 Python
Python下载网易云歌单歌曲的示例代码
2020/08/12 Python
css3 给页面加个半圆形导航条主要利用旋转和倾斜样式
2014/02/10 HTML / CSS
Alba Moda德国网上商店:意大利时尚女装销售
2016/11/14 全球购物
美国猫狗药物和用品网站:PetCareRx
2017/01/05 全球购物
Priority Pass机场贵宾室会籍计划:全球超过1200间机场贵宾室
2018/08/26 全球购物
物业门卫岗位职责
2013/12/28 职场文书
大二学习计划书范文
2014/04/27 职场文书
节约能源标语
2014/06/17 职场文书
演讲稿之开卷有益
2019/08/07 职场文书
CSS filter 有什么神奇用途
2021/05/25 HTML / CSS
pytorch通过训练结果的复现设置随机种子
2021/06/01 Python
pandas进行数据输入和输出的方法详解
2022/03/23 Python