webpack+babel常見問題
阿新 • • 發佈:2019-01-01
學習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檔案,編譯的時候會很慢,所以應該排除這個資料夾,有兩種解決方法
只包含要編譯的資料夾
include: path.resolve(__dirname,'src')
排除node_modules
exclude:/node_modules/