更多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 )幫你處理依賴打包成能在瀏覽器跑的代碼。