webpack關聯babel手記

2021-10-10 14:22:35 字數 2513 閱讀 5986

babel是為了把高階js語法轉為低版本語法,它跟webpack是兩個互不相關的工具,要想將它們關聯起來,需要借助到:

1、@babel/core:babel的核心模組

2、babel-loader:把 babel 和 webpack 進行關聯的橋梁

3、@babel/preset-env:預設

// 安裝完之後去 rules 中進行配置},

exclude:

/node_modules/

// 不處理該資料夾下的js檔案

}

只是配置預設的話,只能把高版本js寫法轉為低版本寫法,但是對於高階api(例如:reduce、object.assign等),是沒有辦法轉換的。

想要轉換高階api,需要用到usebuiltins這個屬性,其屬性值有三個:

false:不需要轉譯(預設值)

entry:整體轉譯

usage:按需轉譯

// babel是處理js檔案的]]

},exclude:

/node_modules/

// 不處理該資料夾下的js檔案

}

報錯:

說的是使用了usebuiltins需要依賴乙個包:core-js。安裝完之後再進行配置

]]

},exclude:

/node_modules/

// 不處理該資料夾下的js檔案

}

只是這樣配置雖然實現了能轉換高階api的功能,但是有乙個弊端:**中高階api使用多少次,就從core-js中引入多少次轉譯的模組,會造成**的冗餘。

解決這個問題:使用@babel/plugin-transform-runtime外掛程式(是babel的外掛程式)和@babel/runtime

]]

, plugins:

[// babel需要的外掛程式

"@babel/plugin-transform-runtime"

,// 這個外掛程式可以實現一次匯入,多次使用,不再是使用多少次就匯入多少次,減少**冗餘]}

, exclude:

/node_modules/

// 不處理該資料夾下的js檔案

}

對 babel 的配置,除了可以直接配置在webapck.config.js中,還可以單獨建立乙個配置檔案.babelrc,將這些配置資訊寫在裡面即可

// .babelrc 配置檔案]]

,// babel 需要的外掛程式

"plugins":[

"@babel/plugin-transform-runtime"

// 避免重複引入,減少**冗餘

]}

// webpack.config.js 檔案

, exclude:

/node_modules/

// 不處理該資料夾下的js檔案

}

額外再介紹乙個外掛程式:@babel/plugin-proposal-class-properties這是外掛程式是用來處理識別class類的新語法的

class

person

constructor()

b =1;

// 這種新語法webpack是不識別的,需要安裝babel外掛程式 @babel/plugin-proposal-class-properties

}

// 用babel處理js檔案]]

, plugins:

[// babel需要的外掛程式

"@babel/plugin-transform-runtime"

,// 這個外掛程式可以實現一次引用,多次使用,不再是使用多少次就引用多少次

"@babel/plugin-proposal-class-properties"

,// 處理class類中的屬性]}

},exclude:

/node_modules/

// 不處理該資料夾下的js檔案

}

webpack配合babel使用

babel 是乙個 j ascript 編譯器,可以把es6的語法轉為相容瀏覽器的es5語法 babel中文官網 babel可以單獨使用,但是一般都是和webpack結合一起使用 1 babel loader babel core babel preset env 換語法 安裝依賴 已經在專案裡安裝...

webpack中的babel配置

webpage只能處理一部分es6的新語法,更高階的語法不能處理,需要借助第三方loader將高階語法轉換為低階語法 大部分時候用不上,但是如果需要在比較低階的瀏覽器執行時,就需要使用 1.安裝babel相關的包 第一套包 cnpm install babel core babel loader 7...

關於webpack中babel外掛程式的使用

webpack是不能解析es6語法的,需要用到外掛程式來轉化為es5和瀏覽器能識別的檔案 1.cnpm i babel core babel loader 7 babel plugin transform runtime d這裡我使用的cnpm指令安裝可以更快,盡量不要npm和cnpm指令混用,因為...