為什么要用webpack-dev-server
在開發中,我們都可以發現僅僅使用Webpack以及它的命令行工具來進行開發調試的效率並不高,每次編寫好代碼之后,我們需要執行npm run build命令更新js文件,然后再刷新頁面,才能看到更新效果。webpack-dev-server正好解決了這個問題,是一款便捷的本地開發工具。
webpack-dev-server 安裝及配置
用以下命令進行安裝:
npm install webpack-dev-server --save-dev
--save-dev:將webpack-dev-server保存配置信息到pacjage.json的devDependencies(開發環境依賴)節點中。這樣做是因為webpack-dev-server僅僅在本地開發時才會用到,在生產環境中並不需要它 。項目上線的時候,要進行依賴安裝,就可以通過npm install--production過濾掉devDependencies中的冗余模塊,從而加快安裝和發布的速度。
為了便捷地啟動webpack-dev-server,我們在package.json中添加一個dev指令:
"scripts": {
"build": "webpack",
"dev": "webpack-dev-server --open" //open是自動執行后打開頁面
}
最后,對webpack.config.js添加一個devServer對象,它是專門用來放webpack-dev-server配置的,webpack-dev-server可以看作一個服務者,它的主要工作就是接收瀏覽器的請求,然后將資源返回。當服務啟動時,會先讓Webpack進行模塊打包並將資源准備好(在示例中就是bundle.js)。當webpack-dev-server接收到瀏覽器的資源請求時,它會首先進行URL地址校驗。如果該地址是資源服務地址(上面配置的publicPath),就會從Webpack的打包結果中尋找該資源並返回給瀏覽器。反之,如果請求地址不屬於資源服務地址,則直接讀取硬盤中的源文件並將其返回
"devServer": {
"publicPath": './dist',
"port": 3000
}
這里有一點需要注意。直接用Webpack開發和使用webpack-dev-server有一個很大的區別,前者每次都會生成budnle.js,而webpack-dev-server只是將打包結果放在內存中,並不會寫入實際的bundle.js,在每次webpack-dev-server接收到請求時都只是將內存中的打包結果返回給瀏覽器。
webpack-dev-server還有一項很便捷的特性就是live-reloading(自動刷新)。當我們修改了內容之后,切換到瀏覽器你會發現,瀏覽器內容也變化了。
webpack-dev-server特點:
- 令Webpack進行模塊打包,並處理打包結果的資源請求
- 作為普通的Web Server,處理靜態資源文件請求
- 解決了來回npm run build,再更新代碼的問題,比較便捷
- 可以設置port端口和open(自動打開頁面),其他更多配置可以參考官網api:https://webpack.js.org/configuration/dev-server/
- 自動刷新:瀏覽器自動更改后的內容