时间:2021-05-25
前言
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'))总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
ES6新的数组方法、集合、for-of循环、展开运算符(...)甚至异步编程都依赖于迭代器(Iterator)实现。本文会详解ES6的迭代器与生成器,并进一步挖
去年6月份,ES2015正式发布(也就是ES6,ES6是它的乳名),其中Promise被列为正式规范。作为ES6中最重要的特性之一,我们有必要掌握并理解透彻。本
使用ES6语法重构React组件在AirbnbReact/JSXStyleGuide中,推荐使用ES6语法来编写react组件。下面总结一下使用ES6class
ES6——let和const命令引言本文主要讲解ES6中变量的相关操作,变量的命名,讲解var、let、const三者的区别正文ES6中的let和const都是
edge支持es6,Edge15可以支持96%的ES6新特性。Edge14可以支持93%的ES6新特性。 2015年4月30日,微软在旧金山举行的Build2