在開發網頁時都需要使用 web Server 來用用於開發環境中,早期開發多是使用 xampp 這類的 local server 開發,目前以前端來使用是透過 VSCode 使用 liveServer 開啟本地端的 server 來開啟頁面,這樣的方式都會比較麻煩,在開發網站時會透過多套的軟體或是插件才能進行開發。

以 webpack 開發方式,可以啟用本地端 server,與支援 log 輸出與其他相關應用。


什麼是 webpack-dev-server

webpack-dev-server 可以啟動 server 環境,透過 localhost 開啟開發中的網頁。


webpack-dev-server 安裝與設定

webpack-dev-server 安裝

webpack-dev-server 並沒有包在一開始下載的 webpack 核心套件中,是以一個獨立的功能來選擇可裝或不裝,安裝輸入下面指令。

webpack-dev-server 的設定

前往 webpack.config.js 檔中的 module.exports = {} 下加入下面程式碼,可放置在 output: {}, 的後方插入 webpack-dev-server 設定。

設定參數說明如下:

  • compress: true, 使用 webpack-dev-server 啟動專案時,處理相關的內容如連結與下載時,會以壓縮格式處理,會讓 webpack-dev-server 啟動時變的較快速。
  • port: 3000, 指定 localhost 連線的埠號,預設是 3000 可自定。

devServer 設定中的 stats 細節比較多,如果上面常用設定不夠,可以在加入下方的細項設定,對應如下。

設定 package.json 的 npm 指令

package.json 檔中的 "scripts": {} 中再加入一行 npm 的 'dev' 指令,指令如下。

設定錯誤 npm 指令參數 –mode development (–mode 寫於 webpack 檔與設定的前面)

錯誤寫法如下。

設定好 npm 指令 'dev',使用 npm run dev 執行 webpack 執行編譯,此時會產生錯誤提示。

查看上面一點的錯誤訊息。

在 webpack 執行的過程中,會先去讀取 webpack.config.js 檔,而 npm 指令的讀取順預是先由前到後面,先把 --mode development 放置在前面而 webpack-dev-server 在後面,會造成沒有先讀取到 webpack.config.js 檔的內容,而在 npm 指令中的 --mode development 就會回應出錯誤訊息。

正確設定 npm 指令參數 –mode development (–mode 寫於 webpack 檔與設定的後面)

修改後如下,將 --mode development 放置於 webpack-dev-server 的後方。

npm 自定指令的讀取順序, webpackwebpack-dev-server 都需要注意 webpack.config.js 檔的載入順序,確定戴入套件後再將模式參數 --mode development 傳入 npm 使用。

直接將 NODE_ENV 設定在 webpack.config.js 檔中也是可行,就可不用注意 npm 自定指令戴入套件與參數前後順序的問題。


webpack-dev-server 啟動時的注意事項

webpack-dev-server 預處理於記憶體不會產生 dist 資料夾

修正問題後,再輸入 npm run dev 指令,基本上就會成功開啟 wewbpack-dev-server 的 local server,相關的 log 訊息與編譯內容都在出現在終端機上。

wewbpack-dev-server 啟動成 local server 時,並不會執行 webpack 編譯動作而產生 dist 相關資料夾與檔案,主要只針對 src 資料夾中的檔案與內容,以預處理的方式執行至電電記憶體中,這樣的方式並不會產生 dist 資料夾是直接取用記憶體。

執行 webpack-dev-server 時會在終端機上產生 local server 網址

執行 webpack-dev-server 時會在終端機上產生 local server 網址與埠號,而埠號設定於 webpack.config.js 檔中的 devServer: { port: 3000, }

開啟 local server 網址瀏覽器頁面,修改 src 資料夾下相關檔案會同時更新畫面

在 VSCode 中配合 cmd 鍵點按,而瀏覽器會開啟 local server 的頁面,當修改 src 內的相關檔案存檔後,webpack-dev-server 就會觸發同時更新瀏覽器頁面,重新讀取頁面同時將畫面內容更新。

使用 npm 自定指令加入參數 –open,開啟 webpack-dev-server 時自動開啟預設瀏覽器

將 npm 指令修改如下,後方多加入 --open 參數

終端機在輸入指令 npm rnu dev 後,就會動自開啟預設瀏覽器的 local server 的頁面,這樣自動開啟方式就不用再透過點按終端機所產生的網址與埠號,在開啟專案時較方便只要輸入指令就可開啟專用的頁面。

npm 指令後透過 --open 開啟的瀏覽器為預設瀏覽器,如果要直接針對特定使用的瀏覽器像是 'google chrome' 或是 'Firefox Developer Edition' 直接使用字串名稱於 --open 後方,啟動後就會在指定的瀏覽器上開始頁面。