Webpack5 新特性與詳細配置指南

一、Webpack5 新特性

內置 Asset Modules(資源模塊)

  • 替代 file-loader、url-loader、raw-loader 等,統一資源處理方式。
  • 四種類型:
  • asset/resource:導出文件 URL(等同 file-loader)。
  • asset/inline:導出 DataURL(等同 url-loader)。
  • asset/source:導出源碼(等同 raw-loader)。
  • asset:自動選擇 resource 或 inline(默認 8KB 分界)。

持久化緩存(Persistent Caching)

  • 新增?cache: { type: 'filesystem' },極大提升二次構建速度。

Tree Shaking 更徹底

  • 默認生產模式下更智能地移除無用代碼。

Module Federation(模塊聯邦)

  • 支持多個獨立構建的應用共享模塊,實現微前端架構。

更快的構建性能

  • 優化了編譯流程,支持多進程/多實例(如 thread-loader)。

移除 Node.js Polyfills

  • 不再自動為 Node.js 內置模塊做 polyfill,需手動引入。

更智能的默認配置

  • 如 production/development 模式下的優化、緩存、分包等。

更好的資源指紋

  • 支持?chunkhashcontenthashhash,便于緩存管理。

二、詳細配置

基礎配置

// webpack.config.js
const path = require("path");module.exports = {mode: "production", // 或 'development'entry: {index: "./src/index.js",},output: {path: path.join(__dirname, "dist"),filename: "[name].js",},
};

資源模塊(Asset Modules)

module.exports = {module: {rules: [{test: /\.(jpg|jpeg|png|gif|svg)$/i,type: "asset",generator: {filename: "images/[hash][ext][query]",},},{test: /\.(ttf|eot|woff|woff2|otf)$/i,type: "asset/resource",generator: {filename: "fonts/[hash][ext][query]",},},{test: /\.txt$/,type: "asset",generator: {filename: "files/[hash][ext][query]",},parser: {dataUrlCondition: {maxSize: 4 * 1024, // 4kb},},},],},
};

CSS/LESS/PostCSS 配置

const MiniCssExtractPlugin = require("mini-css-extract-plugin");module.exports = {module: {rules: [{test: /\.css$/,use: [MiniCssExtractPlugin.loader, "css-loader", "postcss-loader"],},{test: /\.less$/,use: [MiniCssExtractPlugin.loader,"css-loader","postcss-loader","less-loader",],},],},plugins: [new MiniCssExtractPlugin({filename: "[name]_[contenthash:8].css",}),],
};
PostCSS 配置(postcss.config.js)
module.exports = {plugins: [require("autoprefixer"),// 可選:cssnext、purgecss 等],
};

代碼分割與動態 import

// 安裝插件
// npm i -D @babel/plugin-syntax-dynamic-import// .babelrc
{"plugins": ["@babel/plugin-syntax-dynamic-import"]
}

動態 import 示例:

methods: {dynamicImportFn() {import('./Dynamic.vue').then(component => {this.dynamicComponent = component.default;});}
}

緩存與構建優化

module.exports = {cache: {type: "filesystem",buildDependencies: {config: [__filename],},version: "1.0",},
};

多進程/多實例

module.exports = {module: {rules: [{test: /\.js$/,use: [{loader: "thread-loader",options: { workers: 2 },},"babel-loader",],},],},
};

體積分析與速度分析

const SpeedMeasurePlugin = require("speed-measure-webpack-plugin");
const BundleAnalyzerPlugin =require("webpack-bundle-analyzer").BundleAnalyzerPlugin;const smp = new SpeedMeasurePlugin();module.exports = smp.wrap({// ...webpack 配置plugins: [new BundleAnalyzerPlugin()],
});

生產環境優化

  • JS 壓縮:內置 TerserPlugin
  • CSS 壓縮:css-minimizer-webpack-plugin
const CssMinimizerPlugin = require("css-minimizer-webpack-plugin");module.exports = {optimization: {minimize: true,minimizer: [new CssMinimizerPlugin({ parallel: true })],},
};

DLL 預編譯

// webpack.dll.js
const path = require("path");
const webpack = require("webpack");module.exports = {mode: "production",entry: ["vue"],output: {path: path.resolve(process.cwd(), "dll"),filename: "vendor.js",library: "dllExample",},plugins: [new webpack.DllPlugin({name: "dllExample",path: path.resolve(process.cwd(), "dll/manifest.json"),}),],
};

三、使用示例

資源引用

  • 圖片、字體、文本等資源直接 import 即可,Webpack5 自動處理。

代碼分割

  • 使用?import()?實現懶加載和動態組件。

性能分析

  • 運行?npm run build?后自動彈出體積分析報告。

參考資料

  • Webpack 官方文檔
  • Webpack5 遷移指南

?Webpack5 新特性與詳細配置指南 - 高質量源碼分享平臺-免費下載各類網站源碼與模板及前沿技術分享

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/90057.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/90057.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/90057.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

籠子在尋找一只鳥:解讀生活的隱形陷阱

想象一個閃閃發光的籠子,敞開著門,在世界中游蕩,尋找一只鳥兒。這畫面是不是有點奇怪?這是卡夫卡的格言“一個籠子在尋找一只鳥”帶給我們的奇思妙想。通常,鳥兒自由翱翔,籠子靜靜等待,但卡夫卡…

低空經濟展 | 約克科技攜小型化測試設備亮相2025深圳eVTOL展

全球低空經濟與eVTOL產業盛會——2025深圳eVTOL展,將于2025年9月23日至25日在深圳坪山燕子湖國際會展中心盛大啟幕! 本屆展會以“低空經濟eVTOL航空應急救援商載大型無人運輸機”為核心,預計匯聚200位發言嘉賓、500家頂尖展商及15,000位專業觀…

數學專業轉行做大數據容易嗎?需要補什么?

高考志愿選擇數學專業是一個面向未來的決定。數學作為基礎學科,其嚴謹的邏輯訓練和抽象思維能力培養,為后續專業發展提供了廣泛的可能性。在數字化時代背景下,數學專業畢業生在數據科學、人工智能等領域的競爭優勢明顯。大學期間推薦考CDA數據…

物聯網系統中-設備管理定義方法

物聯網系統中的設備管理是指對聯網物理設備進行全生命周期監控、配置、維護和優化的系統性過程。它涵蓋了從設備接入到退役的各個環節,是物聯網平臺的核心能力,確保設備安全、穩定、高效地運行并產生價值。 以下是設備管理的詳細定義與核心組成部分&…

java和ptyhon對比

📝 ?1. 語言特性對比??維度??Java??Python??語法風格?靜態類型,需顯式聲明變量類型;代碼冗長(需分號、大括號)動態類型,變量類型自動推斷;簡潔(縮進代替大括號&#xff0c…

UI測試解決方案TestComplete:助力小團隊端到端測試全覆蓋

面對軟件多平臺部署的復雜環境與有限的人力資源,小團隊在追求端到端測試覆蓋時常常陷入困境:既要確保應用在Windows、macOS、Linux及iOS、Android等碎片化平臺上的穩定兼容,又要應對腳本重復編寫耗時費力、測試效率低下的挑戰,同時…

【Android】事件、繪制坐標系相關

一,事件坐標系即MotionEvent事件下發的坐標系,其坐標軸如下MotionEvent#offsetLocation方法可調整坐標原點,以影響MotionEvent#getX,MotionEvent#getY值,以匹配子View的坐標參考系,進而進行事件處理。注意&…

本地Linux服務器使用Docker快速部署SyncTV

文章目錄前言1. Docker部署2. 簡單使用演示3. 安裝cpolar內網穿透4. 配置公網地址5. 配置固定公網地址前言 當想和異地戀人同步看恐怖片卻因網絡延遲錯過驚悚瞬間,或與朋友組隊觀看電競直播時無法實時吐槽…這些尷尬場景或許你都經歷過。而SyncTV的存在正是為了解決…

搭建比分網服務器怎么選數據不會卡頓?

一、 體育比分網站的獨特技術挑戰體育比分網站是互聯網服務中的"極限運動",面臨三大技術高峰:數據實時性:NBA最后2分鐘的比分延遲超過1秒就會流失用戶流量脈沖:歐冠決賽時流量可能是平時的50-100倍全球覆蓋:…

7月18日總結

bashupload / upload files from command line 遠程文件包含 介紹一個上傳文件的網站 bashupload.com 簡介 借助bashupload.com,可以簡樸地從下令行上傳文件,剖析給其他的服務器,桌面和移動裝備,最大支持25G。上傳的文件會被保留…

【leetcode】3202. 找出有效子序列的最大長度(2)

文章目錄題目題解題目 3202. 找出有效子序列的最大長度(2) 給你一個整數數組 nums 和一個 正 整數 k 。 nums 的一個 子序列 sub 的長度為 x ,如果其滿足以下條件,則稱其為 有效子序列 : (sub[0] sub[1]) % k (su…

Linux內核網絡棧深度剖析:inet_connection_sock.c的服務器端套接字管理

引言 在Linux網絡協議棧中,net/ipv4/inet_connection_sock.c是實現面向連接協議(如TCP)服務器端邏輯的核心文件。它承載了從端口綁定、連接接受到資源回收的全流程管理,是構建高并發網絡服務的基石。本文將深入解析其關鍵機制和實現原理。 一、地址匹配:端口沖突檢測的基…

機器學習中核心評估指標(準確率、精確率、召回率、F1分數)

混淆矩陣混淆矩陣是一個表格,用于總結分類模型在測試集上的預測結果,特別是當真實標簽已知時。它將預測結果分為四種情況(記憶:實際和預測一致為True,預測為正是Positive):真正例: 實…

從零搭建Cloud Alibaba

1.初始環境的搭建 1.1環境要求: Spring Boot 3.2.5: 基于最新的 Spring Framework 6.x。支持現代化開發模式,幫助開發更加高效。 JDK 17 或更高版本: Spring Boot 3.x 開始要求 Java 17 作為最低運行環境。 Spring Boot 與 Sp…

Spring AI 工具調用

文章目錄簡述工具定義工具上下文直接返回方法:直接返回工具執行框架控制工具執行用戶控制的工具執行異常處理簡述 工具調用(也稱為函數調用)是 AI 應用程序中的一種常見模式,允許模型與一組 API 或工具進行交互,從而增…

GitHub 趨勢日報 (2025年07月20日)

📊 由 TrendForge 系統生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日報中的項目描述已自動翻譯為中文 📈 今日獲星趨勢圖 今日獲星趨勢圖2033maybe737remote-jobs674Hyprland581n8n572shadPS4341bknd281Resume-Matcher249…

替代標準庫:實用 C++ 開源組件推薦

C17 及 C20 引入了許多現代化的標準庫組件,如 std::filesystem、std::optional、std::format、std::chrono 的增強,以及 std::expected 等。然而,在一些項目中,受限于老版本編譯器、不完善的標準庫實現,或跨平臺兼容性…

夯實基礎:配置Java開發環境JDK與構建工具Maven

摘要:在前面兩個章節中,我們一同探討了Spring Boot的革命性優勢,并深入其內部,理解了起步依賴、自動配置和內嵌容器這三大核心基石。理論的鋪墊是為了更穩健的實踐。從本章開始,我們將正式“卷起袖子”,搭建…

PyCharm 未正確關聯 .jpg 為圖片格式

1. PyCharm 未正確關聯 .jpg 為圖片格式PyCharm 可能錯誤地將 .jpg 文件識別為文本文件,導致無法預覽圖片。解決方法手動關聯 .jpg 為圖片格式:Windows/Linux: File → SettingsmacOS: PyCharm → Preferences進入 Editor → File Types。在 Recognized …

DM8數據庫Docker鏡像部署最佳實踐

DM8數據庫Docker鏡像部署最佳實踐一、Docker加載DM8鏡像二、Docker創建DM8容器三、驗證目錄是否掛載成功一、Docker加載DM8鏡像 1.下載DM8鏡像,由于官網暫未提供docker鏡像下載,可通過網盤下載:https://pan.quark.cn/s/fe38ba821a2a 2.打開…