五分鐘突擊之 .babelrc

官網(wǎng)

https://www.babeljs.cn/docs/configuration

安裝

npm install --save-dev @babel/core

功能

Babel 是廣為使用的 ES6 轉(zhuǎn)碼器,可以將 ES6 代碼轉(zhuǎn)化為 ES5 代碼冠摄。比如:

// 轉(zhuǎn)碼前
input.map(item=>item+1)
// 轉(zhuǎn)碼后
input.map(function (item){
    return item+1;
});

配置文件 .babelrc

使用 Babel 第一步就是配置此文件鹊漠,放在項(xiàng)目根目錄,此文件用于配置轉(zhuǎn)碼規(guī)則和插件浙滤,基本格式:

{
"presets":[],
"plugins":[]
}

對預(yù)設(shè)(presets)和插件(plugins)進(jìn)行配置阴挣,因此不同的轉(zhuǎn)譯器作用不同的配置項(xiàng),大致可分為以下三項(xiàng):

1.語法轉(zhuǎn)譯器

主要對 JavaScript 最新的語法糖進(jìn)行編譯纺腊,并不負(fù)責(zé)轉(zhuǎn)譯新增的 API 和全局對象畔咧。
而 Promise,Iterator,Generator,Set,Maps,Proxy,Symbol 等全局對象,以及一些定義在全局對象的方法(比如 includes/Object.assign 等)并不能被編譯揖膜。

@babel/preset-env 轉(zhuǎn)譯包

npm install --save-dev @babel/preset-env

官方推薦使用誓沸,包含了所有現(xiàn)代js(es2015 es2016等)的所有新特性,你也可以傳遞一些配置給env壹粟,精準(zhǔn)實(shí)現(xiàn)你想要的編譯效果拜隧。

{
  "presets": [
    ["@babel/env",  {
      "modules": false //默認(rèn)都是支持 CommonJS
    }]
  ]
}

env 更多配置可以參考官網(wǎng)

2.API 和全局對象轉(zhuǎn)譯器

負(fù)責(zé)轉(zhuǎn)譯新增的 API 和全局對象,保證在瀏覽器的兼容性趁仙。比如Promise,Iterator,Generator,Set,Maps,Proxy,Symbol 等全局對象虹蓄,以及一些定義在全局對象的方法(比如 includes/Object.assign 等)具體可查詢definitions.js

babel polyfill

相當(dāng)于一個墊片,可以轉(zhuǎn)譯所有 ES6 API 和全局對象幸撕。
缺點(diǎn):增加包體薇组,比如僅是使用到一種 ES6 新增 API,他也會增加所有的轉(zhuǎn)移語法坐儿。

兩種方式:

  • @babel/plugin-transform-runtime
  • @babel/polyfill
@babel/plugin-transform-runtime

全自動的律胀,不會污染全局 API。

安裝:npm install --save-dev @babel/plugin-transform-runtime
npm install --save @babel/runtime
引用:在 .babelrc 中添加配置

"plugins": ["@babel/plugin-transform-runtime"]

但對于一些實(shí)例化方法比如 Array.includes(x)貌矿,babel-plugin-transform-runtime 無法轉(zhuǎn)換炭菌,此時需要接入 @babel/polyfill

@babel/polyfill

修改全局 prototype 來對 API 和全局變量的墊片的,所以可以轉(zhuǎn)譯實(shí)例方法逛漫。

安裝:npm install --save-dev @babel/polyfill
引用:

1.import "@babel/polyfill";

1.require('@babel/polyfill');

3.module.exports = {// 適合使用 webpack 構(gòu)建的項(xiàng)目
  entry: ["@babel/polyfill", "./app/js"]
};

es6-promise

安裝:npm install es6-promise

如果僅使用到 promise 相關(guān) API黑低,可以僅添加此轉(zhuǎn)譯器

引用:

import _promise from 'es6-promise';
const Promise = _promise.Promise;

3.jsx,flow,TypeScript 等插件轉(zhuǎn)譯器

@babel/preset-react

當(dāng)你使用 react 項(xiàng)目時,需要使用此包配合轉(zhuǎn)譯
安裝:npm install --save-dev @babel/preset-react
引用:在 .babelrc 中添加配置

"presets": ["@babel/preset-react"]

@babel/preset-typescript

當(dāng)你項(xiàng)目是用 TypeScript 編寫時,需要使用此包配合轉(zhuǎn)譯
安裝:npm install --save-dev @babel/preset-typescript
引用:在 .babelrc 中添加配置

"presets": ["@babel/preset-typescript"]

.babelrc 常用示例

react 項(xiàng)目

安裝:

  • npm install --save-dev @babel/preset-env @babel/plugin-transform-runtime @babel/preset-react
{
  "presets": [
    ["@babel/env", {
      "modules": false
    }],
    "@babel/preset-react"
  ],
  "comments": false,//不產(chǎn)生注釋
  "plugins": ["@babel/plugin-transform-runtime"]
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末克握,一起剝皮案震驚了整個濱河市蕾管,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌菩暗,老刑警劉巖掰曾,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異停团,居然都是意外死亡旷坦,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進(jìn)店門佑稠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來秒梅,“玉大人,你說我怎么就攤上這事舌胶±κ瘢” “怎么了?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵辆琅,是天一觀的道長。 經(jīng)常有香客問我这刷,道長婉烟,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任暇屋,我火速辦了婚禮似袁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘咐刨。我一直安慰自己昙衅,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布定鸟。 她就那樣靜靜地躺著而涉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪联予。 梳的紋絲不亂的頭發(fā)上啼县,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天,我揣著相機(jī)與錄音沸久,去河邊找鬼季眷。 笑死,一個胖子當(dāng)著我的面吹牛卷胯,可吹牛的內(nèi)容都是我干的子刮。 我是一名探鬼主播,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼窑睁,長吁一口氣:“原來是場噩夢啊……” “哼挺峡!你這毒婦竟也來了葵孤?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤沙郭,失蹤者是張志新(化名)和其女友劉穎佛呻,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體病线,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吓著,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了送挑。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绑莺。...
    茶點(diǎn)故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖惕耕,靈堂內(nèi)的尸體忽然破棺而出纺裁,到底是詐尸還是另有隱情,我是刑警寧澤司澎,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布欺缘,位于F島的核電站,受9級特大地震影響挤安,放射性物質(zhì)發(fā)生泄漏谚殊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一蛤铜、第九天 我趴在偏房一處隱蔽的房頂上張望嫩絮。 院中可真熱鬧,春花似錦围肥、人聲如沸剿干。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽置尔。三九已至,卻和暖如春氢伟,著一層夾襖步出監(jiān)牢的瞬間撰洗,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工腐芍, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留差导,地道東北人。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓猪勇,卻偏偏與公主長得像设褐,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評論 2 354

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

  • 001.知易行難 今天辦了很多錯事助析。 不該與護(hù)士傷和氣犀被。說著要利他,每天對一個人好呢外冀,但做起來有難度寡键。 該反思就反...
    唯其時物閱讀 112評論 0 0
  • PWong閱讀 218評論 0 0
  • 這半年來我反復(fù)的聽了很多育兒類的書,每每遇到小朋友的問題雪隧,我都會嘗試著通過自己了解的方法嘗試溝通解決西轩,當(dāng)然對于兒童...
    莫小米的一揮手閱讀 359評論 0 1
  • 一半明媚,一半憂傷脑沿。它是一本驚天地泣鬼神的著作藕畔,而我們卻讀的太匆忙。于不經(jīng)意間庄拇,青春的書籍悄然合上注服,以至于我們要重...
  • 今天去健身房上了一節(jié)課,尊巴措近。老師是個活力十足的妹子溶弟,其中教的一個動作要雙手從頭發(fā)、臉頰瞭郑、脖子辜御、胸到腰順著下來,摸...
    喵有九思閱讀 142評論 0 0