>[success] # webpack 項目分析
~~~
1.想優化給先做好項目分析,優化不是盲目去做要先發現問題,在針對性去優化
~~~
>[info] ## 輸出構建信息
~~~
1.利用配置指令'--json':以json格式輸出構建結果,最后只輸出一個json文件(包含所有的構建信息)
具體配置在可以在'package.json',
{
"scripts": {
"build:stats": "webpack --json > stats.json"
}
}
運行完后會根目錄生成' stats.json'里面有構建的信息,如果想指定獲取可以使用
'StatsWebpackPlugin 和 WebpackStatsPlugin'兩個插件對構建信息指定內容獲取這可以直接參考對應的
文檔使用即可
2.官方也提供了可視化的方案幫助來分析'生成的json文件'具體可以參考鏈接
'https://webpack.js.org/guides/code-splitting/#bundle-analysis'其中'webpack-chart','webpack-visualizer'
和'webpack bundle optimize helper'都是需要將生成的'json文件上傳其提供的網站上幫你生成圖形化效果圖'
~~~
>[danger] ##### 配置一些輔助
~~~
1.color 輸出結果帶彩色,比如:會用紅色顯示耗時較長的步驟
2.profile 輸出性能數據,可以看到每一步的耗時
3.progress 輸出當前編譯的進度,以百分比的形式呈現
配置后效果'"webpack --display-modules --profile --progress --colors" ',,'--progress --profile '
這兩個配置是屬于webpack 自身的在任何環境都可以加,可以幫你顯示打包進度條,和時序顯示
~~~
>[danger] ##### 更多的工具參考
[更多分析工具參考](https://survivejs.com/webpack/optimizing/build-analysis/)
>[info] ## 實踐
~~~
1.上面推薦了很多工具,這里實踐選擇了'speed-measure-webpack-plugin' 和'webpack-bundle-analyzer'
1.1.'準備基于時間的分析工具',來幫助我們統計項目構建過程中在編譯階段的耗時情況
'speed-measure-webpack-plugin'
1.2.'準備基于產物內容的分析工具',找到那些冗余的、可以被優化的依賴項。通常,減少這些冗余的依賴包模塊
不僅能減小最后的包體積大小,也能提升構建模塊時的效率'webpack-bundle-analyzer'
~~~
[speed-measure-webpack-plugin](https://www.npmjs.com/package/speed-measure-webpack-plugin)
[webpack-bundle-analyzer](https://www.npmjs.com/package/webpack-bundle-analyzer)
- 工程化 -- Node
- vscode -- 插件
- vscode -- 代碼片段
- 前端學會調試
- 谷歌瀏覽器調試技巧
- 權限驗證
- 包管理工具 -- npm
- 常見的 npm ci 指令
- npm -- npm install安裝包
- npm -- package.json
- npm -- 查看包版本信息
- npm - package-lock.json
- npm -- node_modules 層級
- npm -- 依賴包規則
- npm -- install 安裝流程
- npx
- npm -- 發布自己的包
- 包管理工具 -- pnpm
- 模擬數據 -- Mock
- 頁面渲染
- 渲染分析
- core.js && babel
- core.js -- 到底是什么
- 編譯器那些術語
- 詞法解析 -- tokenize
- 語法解析 -- ast
- 遍歷節點 -- traverser
- 轉換階段、生成階段略
- babel
- babel -- 初步上手之了解
- babel -- 初步上手之各種配置(preset-env)
- babel -- 初步上手之各種配置@babel/helpers
- babel -- 初步上手之各種配置@babel/runtime
- babel -- 初步上手之各種配置@babel/plugin-transform-runtime
- babel -- 初步上手之各種配置(babel-polyfills )(未來)
- babel -- 初步上手之各種配置 polyfill-service
- babel -- 初步上手之各種配置(@babel/polyfill )(過去式)
- babel -- 總結
- 各種工具
- 前端 -- 工程化
- 了解 -- Yeoman
- 使用 -- Yeoman
- 了解 -- Plop
- node cli -- 開發自己的腳手架工具
- 自動化構建工具
- Gulp
- 模塊化打包工具為什么出現
- 模塊化打包工具(新) -- webpack
- 簡單使用 -- webpack
- 了解配置 -- webpack.config.js
- webpack -- loader 淺解
- loader -- 配置css模塊解析
- loader -- 圖片和字體(4.x)
- loader -- 圖片和字體(5.x)
- loader -- 圖片優化loader
- loader -- 配置解析js/ts
- webpack -- plugins 淺解
- eslit
- plugins -- CleanWebpackPlugin(4.x)
- plugins -- CleanWebpackPlugin(5.x)
- plugin -- HtmlWebpackPlugin
- plugin -- DefinePlugin 注入全局成員
- webapck -- 模塊解析配置
- webpack -- 文件指紋了解
- webpack -- 開發環境運行構建
- webpack -- 項目環境劃分
- 模塊化打包工具 -- webpack
- webpack -- 打包文件是個啥
- webpack -- 基礎配置項用法
- webpack4.x系列學習
- webpack -- 常見loader加載器
- webpack -- 移動端px轉rem處理
- 開發一個自己loader
- webpack -- plugin插件
- webpack -- 文件指紋
- webpack -- 壓縮css和html構建
- webpack -- 清里構建包
- webpack -- 復制靜態文件
- webpack -- 自定義插件
- wepack -- 關于靜態資源內聯
- webpack -- source map 對照包
- webpack -- 環境劃分構建
- webpack -- 項目構建控制臺輸出
- webpack -- 項目分析
- webpack -- 編譯提速優護體積
- 提速 -- 編譯階段
- webpack -- 項目優化
- webpack -- DefinePlugin 注入全局成員
- webpack -- 代碼分割
- webpack -- 頁面資源提取
- webpack -- import按需引入
- webpack -- 搖樹
- webpack -- 多頁面打包
- webpack -- eslint
- webpack -- srr打包后續看
- webpack -- 構建一個自己的配置后續看
- webpack -- 打包組件和基礎庫
- webpack -- 源碼
- webpack -- 啟動都做了什么
- webpack -- cli做了什么
- webpack - 5
- 模塊化打包工具 -- Rollup
- 工程化搭建代碼規范
- 規范化標準--Eslint
- eslint -- 擴展配置
- eslint -- 指令
- eslint -- vscode
- eslint -- 原理
- Prettier -- 格式化代碼工具
- EditorConfig -- 編輯器編碼風格
- 檢查提交代碼是否符合檢查配置
- 整體流程總結
- 微前端
- single-spa
- 簡單上手 -- single-spa
- 快速理解systemjs
- single-sap 不使用systemjs
- monorepo -- 工程
- Vue -- 響應式了解
- Vue2.x -- 源碼分析
- 發布訂閱和觀察者模式
- 簡單 -- 了解響應式模型(一)
- 簡單 -- 了解響應式模型(二)
- 簡單 --了解虛擬DOM(一)
- 簡單 --了解虛擬DOM(二)
- 簡單 --了解diff算法
- 簡單 --了解nextick
- Snabbdom -- 理解虛擬dom和diff算法
- Snabbdom -- h函數
- Snabbdom - Vnode 函數
- Snabbdom -- init 函數
- Snabbdom -- patch 函數
- 手寫 -- 虛擬dom渲染
- Vue -- minVue
- vue3.x -- 源碼分析
- 分析 -- reactivity
- 好文
- grpc -- 瀏覽器使用gRPC
- grcp-web -- 案例
- 待續