webpack5之output和devServer的publicPath區別示例詳解
一. output的publicPath
我們知道output
中的path
的作用是打包後文件輸出的目錄:比如靜態資源的js、css
等輸出,常見的會設置為dist、build文件夾
等;
output
中還有一個publicPath
屬性,該屬性是指定index.html
文件打包引用的一個基本路徑:
- 它的默認值是一個空字符串,所以我們打包後引入js文件時,路徑是 bundle.js;
- 在開發中,我們也將其設置為 / ,路徑是 /bundle.js,那麼瀏覽器會根據所在的域名+路徑去請求對應的資源;
- 如果我們希望打包後在本地直接打開html文件來運行,會將其設置為
./
,根據./bundle.js
相對路徑去查找資源;
舉例:
module.exports = { mode: "development", entry: "./src/index.js", output: { filename: "bundle.js", // 打包後的文件的輸出目錄 path: path.resolve(__dirname, "./build"), // 在打包之後的靜態資源前面進行一個路徑的拼接: publicPath: "./" }, }
打包後:
二. devServer的publicPath
devServer中也有一個publicPath的屬性,該屬性是指定開發環境webpack serve下開啟本地服務所在的文件夾:
- 它的默認值是
/
,也就是我們直接訪問端口即可訪問其中的資源 http://localhost:8080; - 如果我們將其設置為瞭 /abc,那麼我們需要通過 http://localhost:8080/abc 才能訪問到對應的打包後的資源;
舉例:
module.exports = { // watch: true, mode: "development", entry: "./src/index.js", output: { filename: "bundle.js", // 打包後的文件的輸出目錄 path: path.resolve(__dirname, "./build"), // 在打包之後的靜態資源前面進行一個路徑的拼接 publicPath: "/abc" //和下方publicPath設置一樣 }, // 專門為webpack-dev-server // devServer為開發過程中, 開啟一個本地服務 devServer: { compress: true, //文件壓縮啟用 [gzip compression] publicPath: "/abc", }, }
官方提到: devServer.publicPath 與 output.publicPath相同
打包後:
註意:上方devServer設置/abc後,我們其中的bundle.js通過 http://localhost:8080/bundle.js是無法訪問的,報錯如下:
所以devServer.publicPath 與 output.publicPath設置要相同!
以上就是webpack5之output和devServer的publicPath區別示例詳解的詳細內容,更多關於webpack publicPath區別的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- webpack5之devServer的常用配置詳解
- JavaScript webpack5配置及使用基本介紹
- webpack-dev-server的安裝使用教程
- NodeJs使用webpack打包項目的方法詳解
- webpack搭建vue環境時報錯異常解決