gulp常用插件之gulp-babel使用


更多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 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])

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

注意:
babel 可以將 es6 的 import 編譯成不同格式,如果是 CommonJs 顯然是不能直接在瀏覽器跑的,需要一些 bundler ( webpack , browserify )幫你處理依賴打包成能在瀏覽器跑的代碼。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM