gulp常用插件之gulp-babel使用

yinuoqingqin 2020-01-13

更多gulp常用插件使用请访问:gulp常用插件汇总


gulp-babel这是Babel的Gulp插件。

此自述文件适用于gulp-babel v8 + Babel v7检查7.x分支以了解使用Babel v6的文档

更多使用文档请点击访问gulp-babel工具官网

安装

安装gulp-babel,如果你想获得的下一版本发布前gulp-babel

# Babel 7
$ npm install --save-dev gulp-babel @babel/core @babel/preset-env

# Babel 6
$ npm install --save-dev  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])

  • options
    请参阅Babel 选项,除了sourceMaps``和filename为您处理之外。另外,请记住,将从适用于每个文件的配置文件中加载选项。

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'))
);

相关推荐