webpack output.publicPath


output.publicPath

string function

對於按需加載(on-demand-load)或加載外部資源(external resources)(如圖片、文件等)來說,output.publicPath 是很重要的選項。如果指定了一個錯誤的值,則在加載這些資源時會收到 404 錯誤。

此選項指定在瀏覽器中所引用的「此輸出目錄對應的公開 URL」。相對 URL(relative URL) 會被相對於 HTML 頁面(或 <base> 標簽)解析。相對於服務的 URL(Server-relative URL),相對於協議的 URL(protocol-relative URL) 或絕對 URL(absolute URL) 也可是可能用到的,或者有時必須用到,例如:當將資源托管到 CDN 時。

該選項的值是以 runtime(運行時) 或 loader(載入時) 所創建的每個 URL 為前綴。因此,在多數情況下,此選項的值都會以/結束。

默認值是一個空字符串 ""

簡單規則如下:output.path 中的 URL 以 HTML 頁面為基准。

path: path.resolve(__dirname, "public/assets"), publicPath: "https://cdn.example.com/assets/" 

對於這個配置:

publicPath: "/assets/", chunkFilename: "[id].chunk.js" 

對於一個 chunk 請求,看起來像這樣 /assets/4.chunk.js

對於一個輸出 HTML 的 loader 可能會像這樣輸出:

<link href="/assets/spinner.gif" /> 

或者在加載 CSS 的一個圖片時:

background-image: url(/assets/spinner.gif); 

webpack-dev-server 也會默認從 publicPath 為基准,使用它來決定在哪個目錄下啟用服務,來訪問 webpack 輸出的文件。

注意,參數中的 [hash] 將會被替換為編譯過程(compilation) 的 hash。詳細信息請查看指南 - 緩存

示例:

publicPath: "https://cdn.example.com/assets/", // CDN(總是 HTTPS 協議) publicPath: "//cdn.example.com/assets/", // CDN (協議相同) publicPath: "/assets/", // 相對於服務(server-relative) publicPath: "assets/", // 相對於 HTML 頁面 publicPath: "../assets/", // 相對於 HTML 頁面 publicPath: "", // 相對於 HTML 頁面(目錄相同) 

在編譯時(compile time)無法知道輸出文件的 publicPath 的情況下,可以留空,然后在入口文件(entry file)處使用自由變量(free variable) __webpack_public_path__,以便在運行時(runtime)進行動態設置。

 __webpack_public_path__ = myRuntimePublicPath // 應用程序入口的其他部分 

有關 __webpack_public_path__ 的更多信息,請查看此討論


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM