銜接前面一篇的webpack安裝與簡易配置,這次說明webpack的loader和plugin。
webpack loader
我們前面entry的index.js檔案,有使用到es6的語法,雖然目前市面上的browser大多對es6的語法都可以解析了,但並不是全部都如此,也因此這邊會使用到babel-loader,幫助我們把es6的語法轉成es5。
index.js

原本打包完的檔案內容

安裝方法
1 | npm install -D babel-loader @babel/core @babel/preset-env |
安裝完後,我們要進webpack.config.js進行設定。在rules的方面,我們可以直接參考github上的使用說明。
1 | module: { |
但我個人喜歡寫成這樣
1 | const babel = { |
這樣寫的好處是可以快速的找到原本定義的內容,且如果當你有不只一個loader要使用時,較不會rules下面有一長串的內容。
我們剛剛安裝babel時,安裝了3個babel的package。
- babel-loader基本上就是告訴webpack遇到什麼檔案需要使用我這個loader來編譯。
- @babel/core,babel的核心,使用babel的API。
- @babel/preset-env,可以根據我們對於瀏覽器的設定,來自動尋找要使用的babel版本。或是直接使用最新版的babel即可。
上述webpack設定內容
- test是正規表達式,告訴module我們遇到.js的檔案時,要使用下面的設定來編譯。
- exclude是表示要排除掉哪些檔案,這邊預設已經排除掉node_modules,如果還要排除掉其他的資料夾,如上述的code “|folder”。
- use裡面的loader是告訴webpack遇到.js檔案要使用哪個loader來進行處理。options就是其他的細部設定,可以設定瀏覽器版本等等,更多詳細可以參考連結。
經過babel-loader編譯完成後,內容會變更

原本的const宣告變數方法變成var,箭頭函式變成原本function(){}的寫法。