最簡單的babel+webpack配置


首先先介紹一下2個重要的庫:core-js 和 regenerator

core-js

core-js 是用於 JavaScript 的組合式標准化庫,它包含 es5 (e.g: object.freeze), es6的 promise,symbols, collections, iterators, typed arrays, es7+提案等等的 polyfills 實現。也就是說,它幾乎包含了所有 JavaScript 最新標准的墊片。不過為什么它不把 generator 也實現了... 😁

regenerator

它是來自於 facebook 的一個庫。主要就是實現了 generator/yeild, async/await。

 

下面我們看看配置

package.json

{
  "name": "babel-test",
  "main": "main.js",
  "scripts": {
    "start": "webpack"
  },
  "devDependencies": {
    "@babel/cli": "^7.5.5",
    "@babel/core": "^7.5.5",
    "@babel/preset-env": "^7.5.5",
    "babel-loader": "^8.0.6",
    "webpack": "^4.38.0",
    "webpack-cli": "^3.3.6"
  },
  "dependencies": {
    "core-js": "^3.1.4",
    "regenerator-runtime": "^0.13.3"
  }
}

@babel/cli @babel/core 是最基礎的2個依賴,結合使用可以把js代碼解析成AST,傳給plugins,然后再反解析會來編譯結果

@babel/preset-env 是babel plugins的預設,它能根據配置,很智能的配置需要的plugins

webpack webpack-cli babel-loader 就是配合babel使用的模塊管理器的相關依賴了

core-js regenerator-runtime 上面其實已經介紹過了,是作為polyfill,供@babel/preset-env使用(適當的配置,可以把這2個庫的代碼,按需打入bundle)

 

babel.config.js

module.exports = {
  presets: [
    [
      "@babel/preset-env",
      {
        "corejs": "3", // 指定core-js的版本,2或者3,這里我們用最新版3
        "useBuiltIns": "usage", // usage是最佳實踐,會按需把core-js和regenerator引入(所謂按需就是按下面的target和編譯的js用到的es6語法來判斷)
        "targets": { // 目標瀏覽器
          "chrome": "58",
          "ie": "9",
        }
      },
    ]
  ],
 exclude: [/node_modules/] // 不要編譯node_modules,不然會出一些奇奇怪怪的問題
};

 

webpack配置:

const path = require('path');

module.exports = {
  mode: "development",
  entry: {
    app: './main.js'
  },
  output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, './dist'),
  },
  module: {
    rules: [
      {
        test: /\.js$/,
        use: ['babel-loader'],
        // exclude: /node_modules/ // exclude寫在babel.config.js,這里就可以不寫了
      }
    ]
  }
};

主要就是配置用babel-loader


免責聲明!

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



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