1. 程式人生 > >webpack+babel常見問題

webpack+babel常見問題

學習webpack打包的時候,在babel上踩了幾個坑,領導又要相容IE,所以在這裡寫一下吧

1. 首先是在使用babel-loader的時候,需要配置,如果沒有配置的情況下,IE會報 語法錯誤的報錯,所以需要配置一下

第一種配置方法是直接在webpack.config.js中寫出來

        {
            test:/\.js$/,
            use: {
                loader: 'babel-loader',
                options: {
                  presets: ['env']
                }
              },
            include: path.resolve(__dirname,'src')    
        },

第二種配置方法是在專案根目錄下新建一個配置檔案.babelrc

這裡寫圖片描述

配置如下

         {
            "presets": [
              "latest",
              "react",
              "stage-2"
            ],
            "plugins": []
          }

2.babel-polyfill

Babel 預設只轉換新的 JavaScript 句法(syntax),而不轉換新的 API ,比如 Iterator、Generator、Set、Maps、Proxy、Reflect、Symbol、Promise 等全域性物件,以及一些定義在全域性物件上的方法(比如 Object.assign)都不會轉碼。Babel 預設不轉碼的 API 非常多,詳細清單可以檢視 definitions.js 檔案

所以需要安裝polyfill

$ npm install -save-dev babel-polyfill

接下來有三種引入方式
1. 在webpack配置檔案中引入

module.exports = { entry: ['babel-polyfill', './app/js'] }

2. 在入口js檔案中引用

import "babel-polyfill"

3. 同是js檔案中引用

require("babel-polyfill");

3.babel會編譯會包含node_modules

node_module中有大量的js檔案,編譯的時候會很慢,所以應該排除這個資料夾,有兩種解決方法

  1. 只包含要編譯的資料夾

      include: path.resolve(__dirname,'src')
    
  2. 排除node_modules

      exclude:/node_modules/