gulp常用插件之gulp-babel使用
更多gulp常用插件使用请访问:gulp常用插件汇总
gulp-babel这是Babel的Gulp插件。
此自述文件适用于gulp-babel v8 + Babel v7检查7.x分支以了解使用Babel v6的文档
安装
安装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
使用
const gulp = require('gulp');
const babel = require('gulp-babel');
gulp.task('default', () =>
gulp.src('src/app.js')
.pipe(babel({
presets: ['@babel/preset-env']
}))
.pipe(gulp.dest('dist'))
);
API
babel([options])
Source Maps
像这样使用gulp-sourcemaps:
const gulp = require('gulp');
const sourcemaps = require('gulp-sourcemaps');
const babel = require('gulp-babel');
const concat = require('gulp-concat');
gulp.task('default', () =>
gulp.src('src/**/*.js')
.pipe(sourcemaps.init())
.pipe(babel({
presets: ['@babel/preset-env']
}))
.pipe(concat('all.js'))
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest('dist'))
);
Babel元数据
流中的文件用babel
属性注释,该属性包含中的元数据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.test); // 'metadata'
cb(null, file);
});
}
gulp.task('default', () =>
gulp.src('src/**/*.js')
.pipe(babel({
// plugin that sets some metadata
plugins: [{
post(file) {
file.metadata.test = 'metadata';
}
}]
}))
.pipe(logBabelMetadata())
)
运行
如果尝试使用生成器等功能,则需要添加transform-runtime
为插件,以包括Babel
运行时。否则,您将收到错误:regeneratorRuntime is not defined
。
安装运行时:
$ npm install --save-dev @babel/plugin-transform-runtime
$ npm install --save @babel/runtime
用作插件:
const gulp = require('gulp');
const babel = require('gulp-babel');
gulp.task('default', () =>
gulp.src('src/app.js')
.pipe(babel({
plugins: ['@babel/transform-runtime']
}))
.pipe(gulp.dest('dist'))
);
注意:
babel 可以将 es6 的 import 编译成不同格式,如果是 CommonJs 显然是不能直接在浏览器跑的,需要一些 bundler ( webpack , browserify )帮你处理依赖打包成能在浏览器跑的代码。