gulp經常使用插件之gulp-babel使用

更多gulp經常使用插件使用請訪問:gulp經常使用插件彙總html


gulp-babel這是Babel的Gulp插件。webpack

此自述文件適用於gulp-babel v8 + Babel v7檢查7.x分支以瞭解使用Babel v6的文檔git

更多使用文檔請點擊訪問gulp-babel工具官網es6

安裝

安裝gulp-babel,若是你想得到的下一版本發佈前gulp-babelgithub

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

APIweb

babel([options])npm

  • options 請參閱Babel 選項,除了sourceMaps``和filename爲您處理以外。另外,請記住,將從適用於每一個文件的配置文件中加載選項。

Source Mapsgulp

像這樣使用gulp-sourcemapsapi

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

相關文章
相關標籤/搜索