webpack在打包中體積和速度上的一點優化

2021-09-23 10:25:14 字數 2914 閱讀 5418

(1)webpack 的 resolve.modules 是用來配置模組庫(即 node_modules)所在的位置。當 js 裡出現 import 'vue' 這樣不是相對、也不是絕對路徑的寫法時,它便會到 node_modules 目錄下去找。

(2)在預設配置下,webpack 會採用向上遞迴搜尋的方式去尋找。但通常專案目錄裡只有乙個 node_modules,且是在專案根目錄。為了減少搜尋範圍,可我們以直接寫明 node_modules 的全路徑。

(1)開啟 build/webpack.base.conf.js 檔案,新增如下高亮配置:

module.exports = 

},

webpack的裝載機(loaders),允許每個子項都可以有以下屬性:

對於include,更精確指定要處理的目錄,這可以減少不必要的遍歷,從而減少效能損失。同樣,對於已經明確知道的,不需要處理的目錄,則應該予以排除,從而進一步提公升效能。假設你有乙個第三方元件的引用,它肯定位於node_modules,通常它將有乙個 src 和乙個 dist 目錄。如果配置webpack來排除 node_modules,那麼它將從 dist 已經編譯的目錄中獲取檔案。否則會再次編譯它們。故而,合理的設定 include & exclude,將會極大地提公升webpack打包優化速度

(1)開啟 build/webpack.base.conf.js 檔案,新增如下高亮配置:

module: ,

,

(1)預設情況下 webpack 使用 uglifyjs 外掛程式進行**壓縮,但由於其採用單執行緒壓縮,速度很慢。

(2)我們可以改用 webpack-parallel-uglify-plugin 外掛程式,它可以並行執行 uglifyjs 外掛程式,從而更加充分、合理的使用 cpu 資源,從而大大減少構建時間。

(1)執行如下命令安裝 webpack-parallel-uglify-plugin

npm i webpack-parallel-uglify-plugin

(2)開啟 build/webpack.prod.conf.js 檔案,並作如下修改:

const paralleluglifyplugin = require('webpack-parallel-uglify-plugin');

//....

// 刪掉webpack提供的uglifyjs外掛程式

//new uglifyjsplugin(

// },

// sourcemap: config.build.productionsourcemap,

// parallel: true

//}),

// 增加 webpack-parallel-uglify-plugin來替換

new paralleluglifyplugin(,

compress:

}}),

(2)開啟 build/webpack.base.conf.js 檔案,並作如下修改:

const os = require('os');

module.exports = ,]},

plugins: [

//如何處理 用法和loader 的配置一樣

loaders: ,

//共享程序池

verbose: true,

})]}

(1)我們的專案依賴中通常會引用大量的 npm 包,而這些包在正常的開發過程中並不會進行修改,但是在每一次構建過程中卻需要反覆的將其解析,而下面介紹的兩個外掛程式就是用來規避此類損耗的:

(1)在 build 資料夾中新建 webpack.dll.conf.js 檔案,內容如下(主要是配置下需要提前編譯打包的庫):

const path = require('path');

const webpack = require('webpack');

module.exports = ,

output: ,

plugins: [

new webpack.dllplugin(),

new webpack.optimize.uglifyjsplugin(

})]};

"dll":"webpack --config build/webpack.dll.conf.js"

(3)接著執行 npm run dll 命令來生成對應的 dll.js。

注意:如果之後這些需要預編譯的庫又有變動,則需再次執行 npm run build:dll 命令來重新生成 dll.js

(4)index.html 這邊將 dll.js 引入進來。

··· // 你生成了幾個dll都加進來

(5)開啟 build/webpack.base.conf.js 檔案,編輯新增如下高亮配置,作用是通過 dllreferenceplugin 來使用 dllplugin 生成的 dll bundle。

const webpack = require('webpack');

module.exports = ,

//.....

plugins: [

// 新增dllreferenceplugin外掛程式

new webpack.dllreferenceplugin(),

new webpack.dllreferenceplugin(),

new webpack.dllreferenceplugin(),

new webpack.dllreferenceplugin(),

new webpack.dllreferenceplugin()

]}

webpack打包體積優化

這個外掛程式可以直觀展示打包之後,每個包的大小,分析出是否重複打包了某個模組。專案中我們通過cdn引入了某個庫,但是又不想這個庫被打包到webpack最終模組中,我們可以使用externals externals webpack4中production模式下會自動開啟tree shaking模式,但...

Webpack 打包優化之體積篇

談及如今欣欣向榮的前端圈,不僅有各類框架百花齊放,如vue,react,angular等等,就打包工具而言,發展也是如火如荼,百家爭鳴 從早期的王者browserify,grunt,到後來贏得寶座的gulp,以及獨樹一幟的fis3,以及下一代打包神器rollup 在 browserify,grunt...

webpack 與 vue 打包體積優化

在使用vue開發時,遇到打包後單個檔案太大,因而需要分包,不然載入時間太久。雖然盡可能減少請求次數,但是單個包太大也不是好事 entry 需要以實際場景考慮。頁面按需載入,會把不同頁面區分到不同的js檔案中,訪問相應頁面時才載入這些js。但實際這些檔案的體積相加比不分開更大。js 方法1 prev ...