Babel + gulp 構(gòu)建

babel + gulp 使用案例

基礎(chǔ)使用

1、安裝

確認(rèn)你的項(xiàng)目目錄,創(chuàng)建文件夾做為示例項(xiàng)目的根目錄

mkdir /你的工作目錄/babel-gulp-demo
cd /你的工作目錄/babel-gulp-demo
npm init
npm install gulp -g
npm install gulp gulp-babel babel-preset-es2015 --save-dev

2、創(chuàng)建 gulpfile 文件。

gulpfile 文件里定義一個(gè)默認(rèn)default任務(wù)算途,并使用babelbabel插件集編譯一個(gè)示例文件。

新建 babel-gulp-demo/gulpfile.js 文件, 如下::

const gulp = require('gulp');
const babel = require('gulp-babel');

gulp.task('default', () =>
    gulp.src('src/app.js')
        .pipe(babel({
            presets: ['es2015']
        }))
        .pipe(gulp.dest('dist'))
);

3蚀腿、示例文件

使用 class 來(lái)測(cè)試嘴瓤,創(chuàng)建一個(gè)User類(lèi),包含構(gòu)造函數(shù)和實(shí)例方法莉钙。

新建 babel-gulp-demo/src/app.js 文件廓脆,如下:

class User{
    constructor(id, name, age){
        this.id = id;
        this.name = name;
        this.age = age;
    }

    say(){
        return `I am ${this.name}, ${this.age} old`;
    }
}

4、運(yùn)行編譯磁玉,終端中執(zhí)行

gulp // 執(zhí)行默認(rèn)任務(wù)

編譯完之后停忿,我們會(huì)在babel-gulp-demo/dist目錄下查看編譯后的文件,發(fā)現(xiàn)與babel命令行工具babel-cli編譯的結(jié)果是統(tǒng)一的蚊伞。

"use strict";

var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();

function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

var User = function () {
    function User(id, name, age) {
        _classCallCheck(this, User);

        this.id = id;
        this.name = name;
        this.age = age;
    }

    _createClass(User, [{
        key: "say",
        value: function say() {
            return "I am " + this.name + ", " + this.age + " old";
        }
    }]);

    return User;
}();

生成 Source Map

1席赂、修改 gulpfile 文件

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: ['es2015']
        }))
        .pipe(concat('bundle.js'))         // 合并輸出為一個(gè) bundle.js
        .pipe(sourcemaps.write('.'))
        .pipe(gulp.dest('dist'))
);

2、安裝依賴(lài)

npm install gulp gulp-sourcemaps gulp-concat --save-dev

3时迫、再新建一個(gè)示例文件 demo.js

新建 babel-gulp-demo/src/demo.js 文件颅停,如下:

// demo1
for(let i = 0; i < 10; i++){                   // 使用 let
    console.log('i :',i);
}
console.log('i :',i);

// demo2
[1,2,3].map((item)=>{ return item * item });  // 使用箭頭函數(shù)

4、運(yùn)行編譯掠拳,終端中執(zhí)行

gulp // 執(zhí)行默認(rèn)任務(wù)

編譯完之后癞揉,我們發(fā)現(xiàn) let 轉(zhuǎn)變?yōu)?var ,箭頭函數(shù) 轉(zhuǎn)變?yōu)?function

"use strict";

var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();

function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

var User = function () {
    function User(id, name, age) {
        _classCallCheck(this, User);

        this.id = id;
        this.name = name;
        this.age = age;
    }

    _createClass(User, [{
        key: "say",
        value: function say() {
            return "I am " + this.name + ", " + this.age + " old";
        }
    }]);

    return User;
}();
'use strict';

// demo1
for (var _i = 0; _i < 10; _i++) {
    console.log('i :', _i);
}
console.log('i :', i);

// demo2
[1, 2, 3].map(function (item) {
    return item * item;
});
//# sourceMappingURL=bundle.js.map
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末喊熟,一起剝皮案震驚了整個(gè)濱河市柏肪,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌逊移,老刑警劉巖预吆,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異胳泉,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)岩遗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén)扇商,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人宿礁,你說(shuō)我怎么就攤上這事案铺。” “怎么了梆靖?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵控汉,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我返吻,道長(zhǎng)姑子,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任测僵,我火速辦了婚禮街佑,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘捍靠。我一直安慰自己沐旨,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布榨婆。 她就那樣靜靜地躺著磁携,像睡著了一般。 火紅的嫁衣襯著肌膚如雪良风。 梳的紋絲不亂的頭發(fā)上谊迄,一...
    開(kāi)封第一講書(shū)人閱讀 51,292評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音拖吼,去河邊找鬼鳞上。 笑死,一個(gè)胖子當(dāng)著我的面吹牛吊档,可吹牛的內(nèi)容都是我干的篙议。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼鬼贱!你這毒婦竟也來(lái)了移怯?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤这难,失蹤者是張志新(化名)和其女友劉穎舟误,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體姻乓,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡嵌溢,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蹋岩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赖草。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖剪个,靈堂內(nèi)的尸體忽然破棺而出秧骑,到底是詐尸還是另有隱情,我是刑警寧澤扣囊,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布乎折,位于F島的核電站,受9級(jí)特大地震影響侵歇,放射性物質(zhì)發(fā)生泄漏骂澄。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一盒至、第九天 我趴在偏房一處隱蔽的房頂上張望酗洒。 院中可真熱鬧,春花似錦枷遂、人聲如沸樱衷。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)矩桂。三九已至,卻和暖如春痪伦,著一層夾襖步出監(jiān)牢的瞬間侄榴,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工网沾, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留癞蚕,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓辉哥,卻偏偏與公主長(zhǎng)得像桦山,于是被迫代替她去往敵國(guó)和親攒射。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容