Usando ECMAScript 6 en tus tareas de Gulp
Algo muy molesto cuando estás usando ES6 con Babel.js y Gulp.js para automatizar tareas es que el archivo gulpfile.js sigue estando en ES5 y usando los módulos de CommonJS, aunque el resto de tu aplicación use ES6 y sus sistema de módulos.
Esto se acabo desde la última versión de Gulp.js. Al momento de actualizar nuestra instalación global y local de Gulp.js a la v3.9.0 ya nos es posible empezar a usar ES6 en nuestro gulpfile.js gracias a Babel.js.
Para hacer esto primero necesitamos tener la última versión de Gulp.js, para eso podemos usar el comando:
npm up -D gulp && sudo npm up -g gulp
Este comando va actualizar la versión de Gulp que tengamos instalada tanto de forma local como global. Luego de esto necesitamos asegurarnos de tener Babel.js en nuestro package.json
:
npm i -D babel
Por último solo tenemos que renombrar nuestro archivo gulpfile.js
a gulpfile.babel.js
y listo, con solo esto ya podemos hacer algo como esto:
import babelify from "babelify"; import browserify from "browserify"; import buffer from "vinyl-buffer"; import eslint from "gulp-eslint"; import gulp from "gulp"; import source from "vinyl-source-stream"; import uglify from "gulp-uglify"; const config = { browserify: { fileName: "app.js", extensions: [".js"], transform: [babelify] } }; const paths = { src: { eslint: "./src/es6/**/*.js", js: "./src/es6/app.js" }, build: { js: "./build/js/" } }; gulp.task("eslint", () => { return gulp .src(paths.src.eslint) .pipe(eslint()) .pipe(eslint.format()) .pipe(eslint.failOnError()); }); gulp.task("build:js", ["eslint"], () => { return browserify({ entries: paths.src.js, debug: true, extensions: config.browserify.extensions, transform: config.browserify.transform }) .bundle() .pipe(source(config.browserify.fileName)) .pipe(buffer()) .pipe(uglify()) .pipe(gulp.dest(paths.build.js)); }); gulp.task("watch", () => { gulp.watch([paths.src.eslint], ["build:js"]); }); gulp.task("build", ["build:js"]); gulp.task("default", ["build", "watch"]);
<center> <small> <small> Tareas de Gulp para ejecutar ESLint y Browserify + Babelify cada vez que cambia un archivo </small> </small> </center>
Ahora al momento de ejecutar Gulp este va a leer el archivo gulpfile.babel.js y va a ejecutar estas tareas usando Babel.js para transpilar el código en el momento.