首页 > 其他分享 >想体验ES6语法?那用gulp+Babel来搭建ES6环境吧~

想体验ES6语法?那用gulp+Babel来搭建ES6环境吧~

时间:2022-11-28 20:07:19浏览次数:68  
标签:ES6 pipe es6 Babel js gulp jshint plugins


参考:​​ES6初体验——gulp+Babel搭建ES6环境​​  ​​gulp-load-plugins模块化管理插件​

  那至于怎么使用gulp构建工具这一问题这里就略过咯(可以参考我之前发过的有关gulp的文章进行学习)。
  在讲如何使用gulp来搭建ES6环境之前,先来介绍一下一个有用的插件——gulp-load-plugins(模块化管理插件)。
  当然,下面这里其实也是可以跳过的啦。就当普及知识,如果已经知道,可以直接跳过。
  先来看看我们在没使用该插件之前是如何做的吧。一般情况下,gulpfile.js中的模块需要一个个加载。如:

var gulp = require('gulp'),
jshint = require('gulp-jshint'), // 校验js的工具
uglify = require('gulp-uglify'), // 压缩js
concat = require('gulp-concat'); // 合并js

gulp.task('js', function () {
return gulp.src('js/*.js')
.pipe(jshint())
.pipe(jshint.reporter('default'))
.pipe(uglify())
.pipe(concat('app.js'))
.pipe(gulp.dest('build'));
});

  上述文件中,我们需要require gulp模块外,还要引入另外的三个模块。当模块数量更多时,这种加载的写法显得比较麻烦。这时候gulp-load-plugins模块的出现正是要解决这样的问题——可以加载package.json文件中的所有的gulp模块。
  那使用gulp-load-plugins的模块后,上述文件将改写为如下。
  这里先假设package.json文件的依赖如下:

{
//...
"devDependencies": {
"gulp": "^3.9.1",
"gulp-concat": "^2.6.0",
"gulp-jshint": "^2.0.4",
"gulp-load-plugins": "^1.1.0",
"gulp-uglify": "^1.4.1",
"jshint": "^2.9.4"
}
}

  gulpfiles.js中的写法会是这样:

var gulp = require('gulp'),
gulpLoadPlugins = require('gulp-load-plugins'),
plugins = gulpLoadPlugins();

gulp.task('js', function () {
return gulp.src('js/*.js')
.pipe(plugins.jshint())
.pipe(plugins.jshint.reporter('default'))
.pipe(plugins.uglify())
.pipe(plugins.concat('app.js'))
.pipe(gulp.dest('build'));
});

  直接不用写那么多require语句啦,统一使用如plugins这样的变量直接调用。

搭建ES6环境

  都讲了这么久了,还没来重头戏呀。这不,说起这个搭建ES6环境。那么package.json中的依赖是这样的(使用到上述提到的gulp-load-plugins,其实也可以不用;还有将es6语法转为es5的gulp-babel插件):

{
// ...
"devDependencies": {
"babel-preset-es2015": "^6.5.0",
"gulp": "^3.9.1",
"gulp-babel": "^6.1.2",
"gulp-concat": "^2.6.0",
"gulp-jshint": "^2.0.4",
"gulp-load-plugins": "^1.1.0",
"gulp-plumber": "^1.0.1",
"gulp-rename": "^1.2.2",
"gulp-uglify": "^1.4.1",
"gulp-util": "^3.0.1",
"jshint": "^2.9.4"
}
}

  使用命令(c) npm install就可以安装到当前项目所有依赖的模块了。
  那么gulpfile.js配置文件应该长成什么样呢?

/**
* Created by DreamBoy on 2016/12/14.
*/
/**
* 出现如下错误:
* Gulp Error: Cannot find module 'jshint/src/cli'
* 请执行:npm install --save-dev jshint gulp-jshint
*/

var gulp = require('gulp'),
concat = require('gulp-concat'),
rename = require('gulp-rename'),
jshint = require('gulp-jshint'),
uglify = require('gulp-uglify');

// Load plugins
var $ = require('gulp-load-plugins')();

var SRC_DIR = './src/**/*.js';
var DIST_DIR = './dist/';

/* es6 */
gulp.task('es6', function() {

return gulp.src(SRC_DIR)
.pipe($.plumber())
.pipe($.babel({
presets: ['es2015']
}))
.pipe(gulp.dest(DIST_DIR));
});

/* es6-build */
gulp.task('es6-build', function() {

return gulp.src(SRC_DIR)
.pipe($.plumber())
.pipe($.babel({
presets: ['es2015']
}))
.pipe($.jshint())
.pipe($.jshint.reporter('default'))
.pipe($.uglify())
.pipe($.concat('build.js'))
.pipe(gulp.dest(DIST_DIR));
});

//监听文件修改
gulp.task('watch', ['es6'], function() {
gulp.watch([SRC_DIR], ['es6']);
});

  上述文件中,最基本的任务为es6任务了,这个任务非常的“单纯”——将src目录下的所有.js文件由es6语法转为es5,并将生成的文件放置在dist目录下。

  而任务 es6-build 除了做es6任务的事外,还就生成的js文件进行语法的校验、压缩、合并为一个文件build.js,最后存放在dist目录。

  任务watch则监测src目录.js文件的变化,当文件发生变化时,调用es6任务。

  那么简单的目录结构可能长这样:

想体验ES6语法?那用gulp+Babel来搭建ES6环境吧~_babel


  在es6-01.js中写一段es6的代码,如:

export function sum(x, y) {
return x + y;
}
export var pi = 3.141593;

  使用命令行,执行gulp es6,将会在dist生成对应的文件。
(END)


标签:ES6,pipe,es6,Babel,js,gulp,jshint,plugins
From: https://blog.51cto.com/u_15894233/5893580

相关文章

  • 处理数组对象,ES6合并对象数组
    将所有对象,Name相同的值,count合并成新的数组   将格式改为:先处理时间 lettime=_data.map(val=>{returnval.start})console.log(time)处理listl......
  • ES6
    变量let、constES5中,使用var定义变量(var是variable的简写)。ES6中,新增了let和const来定义变量:let:定义变量,替代var。const:定义常量(定义后,不可修改)。......
  • ES6对象的扩展
    对象中可以直接写变量ES6允许在大括号里面,直接写入变量和函数,作为对象的属性和方法。constfoo='bar';constobj={foo};//key值就是foo,value值是foo变量对应的值//......
  • ES6笔记 - 变量的解构赋值
    变量的解构赋值目录变量的解构赋值1.解构赋值2.对象的解构赋值3.其它解构赋值3.1字符串解构赋值3.2数值和布尔值的解构赋值3.3函数的解构赋值4.用途1.解构赋值=......
  • ES6笔记 - let和const命令
    let和const命令目录let和const命令1.let命令2.const命令3.块级作用域4.从function循环问题深入了解let1.let命令let命令的用法和var类似,其核心特点为只在let所在......
  • js面向对象+ES6
    1、面向对象编程介绍1、面向过程编程POP(Process-orientedprogramming)面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候再一......
  • ES5 新增数组方法 ES6 新增数组方法
    ES5新增数组方法|对象调用的方法|作用|返回值||---------------------------------......
  • ES6对象的扩展
    对象中可以直接写变量ES6允许在大括号里面,直接写入变量和函数,作为对象的属性和方法。constfoo='bar';constobj={foo};//key值就是foo,value值是foo变量对应的值......
  • React 学习笔记之一 - ES6 基础
    1.1let及const1.1.1let命令用var声明变量有变量提升的情况。1console.log(a);2vara=1; 如果没有第二行的声明,那么会看到“aisnotdefined......
  • 如何将ES6转换成ES5?
    https://blog.csdn.net/qq_40127119/article/details/126953912 一、介绍ECMAScript6(ES6)的发展速度非常之快,但现代浏览器对ES6新特性支持度不高,所以要想在浏览器中......