相信很多人都和我一樣视译,剛接觸babel的時候都是使用 babel-preset-es2015
這個預(yù)設(shè)套餐的操骡,但是顯然目前而言 babel-preset-env
會是一個更好的選擇晰奖,babel-preset-env
可以根據(jù)配置的目標(biāo)瀏覽器或者運行環(huán)境來自動將ES2015+的代碼轉(zhuǎn)換為es5揭朝。
吸引人的地方在于我們可以通過 [.browserslistrc](https://github.com/browserslist/browserslist)
文件來指定特定的目標(biāo)瀏覽器捆等。當(dāng)然也可以通過targets選項的browsers選項指定匈子。不過如果你的目標(biāo)瀏覽器支持 es modules
特性,browsers
選項則會失效讳嘱,如下:
{
"presets": [
["@babel/preset-env"
"targets": {
"esmodules": true
}
]
]
}
同樣也可以指定Node.js的版本:
{
"presets": [
["@babel/preset-env"
"targets": {
"node": "6.10"
}
]
]
}
如果node的選項值為 current
則說明是指定運行時的node.js版本幔嗦。
{
"presets": [
["@babel/preset-env"
"targets": {
"node": "current"
}
]
]
}
我們需要知道的是制定個targets的browsers時使用的是 browserslist ,我們可以在 .babelrc
文件沥潭、package.json文件邀泉、browserslist中指定瀏覽器版本選項,優(yōu)先級規(guī)則是 .babelrc
文件定義了則會忽略 browserslist
叛氨、.babelrc
沒有定義則會搜索 browserslist
和 package.json
兩者應(yīng)該只定義一個呼渣,否則會報錯棘伴。
babel-preset-env
的主要參數(shù)選項有:
targets
targets.node
targets.browsers
spec : 啟用更符合規(guī)范的轉(zhuǎn)換寞埠,但速度會更慢,默認(rèn)為
false
loose:是否使用
loose mode
焊夸,默認(rèn)為false
modules:將 ES6 module 轉(zhuǎn)換為其他模塊規(guī)范仁连,可選
"adm" | "umd" | "systemjs" | "commonjs" | "cjs" | false
,默認(rèn)為false
debug:啟用debug阱穗,默認(rèn)
false
include:一個包含使用的
plugins
的數(shù)組exclude:一個包含不使用的
plugins
的數(shù)組useBuiltIns:為
polyfills
應(yīng)用@babel/preset-env
饭冬,可選"usage" | "entry" | false
,默認(rèn)為false
Refs:
最后是一個廣告貼揪阶,最近新開了一個分享技術(shù)的公眾號昌抠,歡迎大家關(guān)注??