webpack 編譯過程

2021-10-16 17:15:45 字數 2044 閱讀 2915

webpack 的作用是將源**編譯(構建、打包)成最終**

整個過程大致分為三個步驟

初始化編譯輸出

此階段,webpack會將cli引數、配置檔案、預設配置進行融合,形成乙個最終的配置物件。

對配置的處理過程是依託乙個第三方庫yargs完成的

此階段相對比較簡單,主要是為接下來的編譯階段做必要的準備

目前,可以簡單的理解為,初始化階段主要用於產生乙個最終的配置

1. 建立chunk

chunk是webpack在內部構建過程中的乙個概念,譯為塊,它表示通過某個入口找到的所有依賴的統稱。

根據入口模組(預設為./src/index.js)建立乙個chunk

每個chunk都有至少兩個屬性:

2.構建所有依賴模組

3.產生chunk assets

在第二步完成後,chunk中會產生乙個模組列表,列表中包含了模組id和模組轉換後的**

接下來,webpack會根據配置為chunk生成乙個資源列表,即chunk assets,資源列表可以理解為是生成到最終檔案的檔名和檔案內容

chunk hash是根據所有chunk assets的內容生成的乙個hash字串 hash:一種演算法,具體有很多分類,特點是將乙個任意長度的字串轉換為乙個固定長度的字串,而且可以保證原始內容不變,產生的hash字串就不變

簡圖

4.合併chunk assets

將多個chunk的assets合併到一起,並產生乙個總的hash

此步驟非常簡單,webpack將利用node中的fs模組(檔案處理模組),根據編譯產生的總的assets,生成相應的檔案。

涉及術語

module:模組,分割的**單元,webpack中的模組可以是任何內容的檔案,不僅限於js

chunk:webpack內部構建模組的塊,乙個chunk中包含多個模組,這些模組是從入口模組通過依賴分析得來的

bundle:chunk構建好模組後會生成chunk的資源清單,清單中的每一項就是乙個bundle,可以認為bundle就是最終生成的檔案

hash:最終的資源清單所有內容聯合生成的hash值

chunkhash:chunk生成的資源清單內容聯合生成的hash值

chunkname:chunk的名稱,如果沒有配置則使用main

id:通常指chunk的唯一編號,如果在開發環境下構建,和chunkname相同;如果是生產環境下構建,則使用乙個從0開始的數字進行編號

Webpack搭建過程

webpack就是乙個打包工具 靜態資源打包工具 前端必備 js依賴進行整合處理 打包整合 一些預處理的sass,less可以在環境中進行編譯 換 可以對js html 等進行壓縮 優化 entry 入口檔案 好比main.js output 出口檔案 好比dist 打包之後的資料夾 plugin ...

關於webpack編譯scss檔案

css載入器檔案通常和extract text webpack plugin一塊使用,我們可以在原始檔src目錄下寫scss檔案,然後通過webpack編譯成css檔案到輸出目錄public,這個目錄就是我們 需要引用的目錄.1 var webpack require webpack 2var ht...

關於webpack編譯scss檔案

css載入器檔案通常和extract text webpack plugin一塊使用,我們可以在原始檔src目錄下寫scss檔案,然後通過webpack編譯成css檔案到輸出目錄public,這個目錄就是我們 需要引用的目錄.1 var webpack require webpack 2var ht...