1. 程式人生 > 實用技巧 >使用webpack將ES6轉化ES5的實現方法

使用webpack將ES6轉化ES5的實現方法

babel使用

開啟babel官網,按教程安裝babel

安裝

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

配置rules

module: {
 rules: [
  { test: /\.js$/, exclude: /node_modules/, loader: "babel-loader" }
 ]
}

生成 .babelrc檔案

{
 "presets": ["@babel/preset-env"]
}

此時webpack已經能正確的將高版本的js語法轉為低版本的語法,但是對於新增的api並不會轉化,如promise。這時我們就需要其他的外掛

使用polyfill外掛,對於babel=>7.4.0該方法棄用

安裝

npm install --save @babel/polyfill

修改 .babelrc

{
 "presets": [
  [
   "@babel/preset-env",
   {
     "useBuiltIns":"usage" // 只轉化使用了的API
   }
  ]
 ]
}

使用 在需要轉換的檔案裡引入polyfill

import "@babel/polyfill";

@babel/polyfill 和 @babel/preset-env 的關係

@babel/preset-env 中與 @babel/polyfill 的相關引數有 targets 和 useBuiltIns 兩個

targets: 支援的目標瀏覽器的列表

useBuiltIns: 引數有 “entry”、”usage”、false 三個值。預設值是false,此引數決定了babel打包時如何處理@babel/polyfilll 語句。

“entry”: 會將檔案中 import‘@babel/polyfilll'語句 結合 targets ,轉換為一系列引入語句,去掉目標瀏覽器已支援的polyfilll 模組,不管程式碼裡有沒有用到,只要目標瀏覽器不支援都會引入對應的polyfilll 模組。

“usage”: 不需要手動在程式碼裡寫import‘@babel/polyfilll',打包時會自動根據實際程式碼的使用情況,結合 targets 引入程式碼裡實際用到 部分 polyfilll 模組

false: 對 import‘@babel/polyfilll'不作任何處理,也不會自動引入 polyfilll 模組

使用plugin-transform-runtime

安裝

npm install --save-dev @babel/plugin-transform-runtime

修改 .babelrc

{
"presets": [
  [
   "@babel/preset-env"
  ]
 ],
 "plugins": [
  [
   "@babel/plugin-transform-runtime",
   {
    "absoluteRuntime": false,
    "corejs": 3,
    "helpers": true,
    "regenerator": true,
    "useESModules": false
   }
  ]
 ]
}

注意上面corejs設定項,不同的值需要不同的依賴包

corejs的值 需要安裝的依賴包
false npm install --save @babel/runtim
2 npm install --save @babel/runtime-corejs2
3 npm install --save @babel/runtime-corejs3

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援碼農教程。