Gulp Babel provides a Gulp plugin that integrates Babel JavaScript transpilation into build pipelines, enabling developers to transform modern JavaScript (ES2015+) code into backward-compatible versions for broader browser support.
npm install --save-dev gulp-babel @babel/coreconst babel = require('gulp-babel');For ES6 imports:
import babel from 'gulp-babel';const gulp = require('gulp');
const babel = require('gulp-babel');
gulp.task('default', () =>
gulp.src('src/app.js')
.pipe(babel({
presets: ['@babel/env']
}))
.pipe(gulp.dest('dist'))
);Creates a transform stream that processes JavaScript files through Babel transpilation in Gulp pipelines.
/**
* Creates a Gulp transform stream for Babel transpilation
* @param {Object} [opts] - Babel configuration options
* @returns {Transform} - Node.js transform stream for Gulp pipelines
*/
function babel(opts);Parameters:
opts (Object, optional): Babel configuration options
sourceMap and filename which are handled automaticallypresets (Array): Babel presets to apply (e.g., ['@babel/env'])plugins (Array): Babel plugins to apply (e.g., ['@babel/plugin-transform-arrow-functions'])caller (Object): Caller identification object (merged with default {name: 'babel-gulp'})ignore (Array): Patterns for files to ignore during transformationReturns:
.jsx → .js)file.babel propertyFile Processing Features:
.js (preserves files without extensions)@babel/core@^7.0.0 as peer dependencySource Map Integration:
const gulp = require('gulp');
const sourcemaps = require('gulp-sourcemaps');
const babel = require('gulp-babel');
gulp.task('default', () =>
gulp.src('src/**/*.js')
.pipe(sourcemaps.init())
.pipe(babel({
presets: ['@babel/env']
}))
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest('dist'))
);Babel Metadata Access:
Files processed through the stream receive a babel property containing transformation metadata from babel.transform():
const gulp = require('gulp');
const babel = require('gulp-babel');
const through = require('through2');
function logBabelMetadata() {
return through.obj((file, enc, cb) => {
console.log(file.babel); // Access transformation metadata
cb(null, file);
});
}
gulp.task('default', () =>
gulp.src('src/**/*.js')
.pipe(babel({
plugins: [{
post(file) {
file.metadata.test = 'metadata';
}
}]
}))
.pipe(logBabelMetadata())
);Error Handling: The plugin emits descriptive errors for common issues:
@babel/core@^7.0.0 is requiredStreaming not supportedPeer Dependencies:
@babel/core: ^7.0.0 (required for transpilation)Runtime Dependencies:
plugin-error: Error handling for Gulp pluginsreplace-ext: File extension replacement utilitythrough2: Stream transformation utilitiesvinyl-sourcemaps-apply: Source map integration for Vinyl filesBasic ES2015 Transpilation:
const gulp = require('gulp');
const babel = require('gulp-babel');
gulp.task('babel', () =>
gulp.src('src/**/*.js')
.pipe(babel({
presets: ['@babel/preset-env']
}))
.pipe(gulp.dest('dist'))
);With Transform Runtime:
gulp.task('babel', () =>
gulp.src('src/**/*.js')
.pipe(babel({
plugins: ['@babel/plugin-transform-runtime']
}))
.pipe(gulp.dest('dist'))
);Custom Plugin Configuration:
gulp.task('babel', () =>
gulp.src('src/**/*.js')
.pipe(babel({
plugins: [
'@babel/plugin-transform-arrow-functions',
'@babel/plugin-transform-block-scoping'
]
}))
.pipe(gulp.dest('dist'))
);