1. 程式人生 > >webpack安裝,常見問題和基本外掛使用

webpack安裝,常見問題和基本外掛使用

一:webpack認識

本質上,webpack 是一個現代 JavaScript 應用程式的靜態模組打包器(module bundler)。當 webpack 處理應用程式時,它會遞迴地構建一個依賴關係圖(dependency graph),其中包含應用程式需要的每個模組,然後將所有這些模組打包成一個或多個 bundle

二:webpack安裝

安裝準備:

1:安裝node最新版本

2:安裝npm

成功安裝後可cmd檢視,可以檢視版本號則成功了第一步

全域性安裝:

cmd安裝

這樣安裝一般都是最新版本 webpack 4+ 版本,你還需要安裝 CLI

安裝成功後cmd檢視版本號

注意:全域性安裝只要電腦不發生問題,就無需多次安裝,但是官方不推薦全域性安裝 webpack。這會將你專案中的 webpack 鎖定到指定版本,並且在使用不同的 webpack 版本的專案中,可能會導致構建失敗。

本地安裝:

要安裝最新版本或特定版本,請執行以下命令之一:

如果你使用 webpack 4+ 版本,你依然還需要安裝 CLI

對於大多數專案,我們建議本地安裝。這可以使我們在引入破壞式變更(breaking change)的依賴時,更容易分別升級專案。通常,webpack 通過執行一個或多個 npm scripts,會在本地 node_modules 目錄中查詢安裝的 webpack:

當你在本地安裝 webpack 後,你能夠從 node_modules/.bin/webpack 訪問它的 bin 版本。

三:安裝出現問題

1:配置警告:“模式”選項尚未設定,webpack將返回“生產”獲取此值。將“mode”選項設定為“development”或“.”,以便為每個環境啟用預設值。

解決方法:在package.json中配置下;

然後執行轉換命令列=時後加上 --mode development

2:明明已經安裝,卻找不到webpack模組

解決方法:一般是路徑錯誤,檢視路徑是否正確,反斜槓是否正確,還有本例中是webpack路徑錯誤,應該是

3:檔案程式碼引用模組找不到

解決方法:因為沒有安裝對應包,需要安裝一下:

成功後在package.json中可以檢視依賴包

4:在安裝時可能會報錯不存在webpack一些問題,安裝之前需要初始化:

初始化完成後專案中將存在json檔案和node_modules:

5:如果全域性安裝,現在又想本地安裝,需先刪除全域性:

6:NPM錯誤!在1:257的基準下沒有找到任何值

解決方法:

1.解除安裝本地node

2.刪除本地  ../AppData/Roaming/npm   ../AppData/Roming/npm-cache  這兩個資料夾

   windows命令path檢視你的位置在哪裡   我本地位置:C:\Users\***\AppData\Roaming\npm   C:\Users\***\AppData\Roaming\npm-cache

3.重新下載安裝node 

  官網地址:https://nodejs.org/en/ 

4.檢查node安裝是否成功

  >node -v    --檢視node版本

  >npm -v     --檢視npm版本

  >npm install webpack -g    --安裝webpack

  >webpack -h   --檢視webpack版本

如果以上命令執行都ok,那麼恭喜你,環境已經安裝好了。

四:webpack可以做什麼呢

1:webpack可以處理js間的相互依賴關係

2:webpack能處理js的相容問題,把高階的瀏覽器不識別的語法轉為低階的能正常識別的語法

 五:配置檔案webpack.config.js

配置打包檔案出口入口

命令列直接執行命令打包

注意:可能會出現錯誤:

解決方法:命令列打包時既沒有給出口入口檔案,也沒有配置檔案進行配置出入口

過程分析:當我們在控制檯直接輸入webpack命令執行的時候,webpack做了以下幾步:

1:首先webpack發現,我們並沒有通過命令的形式,給它指定入口和出口

2:webpack就會去專案的根目錄中區查詢一個叫做webpack.config.js的配置檔案

3:當找到這個配置檔案後,webpack會執行並解析這個配置檔案,會得到配置檔案中匯出的配置物件

4:當webpack拿到配置物件後,就拿到了配置物件中指定的入口和出口,然後進行打包構建

六:使用webpack-dev-server工具,實現自動打包編譯功能

簡介:是一個小型node.js express伺服器,新建一個開發伺服器,可以serve我們pack以後的程式碼,並且當代碼更新的時候自動重新整理瀏覽器,啟動webpack-dev-server後,你在目標資料夾中是看不到編譯後的檔案的,實時編譯後的檔案都儲存到了記憶體當中。

本地安裝:

注意:安裝完後直接執行命令會報錯

分析:專案中是本地安裝的webpack-dev-server ,所以無法把它當做指令碼命令,在powersell終端中直接執行(只有那些安裝到全域性的命令 -g,才能在終端中正常執行)

解決:package.json中配置命令

終端中執行命令:

然後修改程式碼儲存後就直接更新打包了,成功後會生成下面配置路徑

注意:webpack-dev-server幫我們打包生成的bundle.js檔案,並沒有存放到實際的物理磁碟中,而是直接託管到電腦的記憶體中,所以,我們在專案目錄中看不到它,但是可以認為和dist,src,node_modules平級有一個看不見的檔案bundle.js(避免對此修改儲存檔案,實時更新打包消耗磁碟)

這個時候專案中引用的bundle.js和打包中引用的bundle.js不是一個檔案了,所以這個時候

專案中引用bundle需要改成:

訪問檔案需要:

另外需要注意的幾個問題:

1:node_modules包有問題

解決方法:刪除node_modules包,重新安裝

 

2:所有包裝完後,webpack-dev-server想正常執行,全域性安裝過了也不行,在本地專案中必須安裝webpack

解決方法:專案本地重新安裝webpack包

 

七:webpack-dev-server常用命令引數

1:修改後自動開啟瀏覽器

2:修改後自動開啟瀏覽器並設定訪問埠號為3000

3:修改後自動開啟瀏覽器並設定訪問埠號為3000,並設定開啟檔案路徑是http://localhost:8080/src/

4:修改後自動開啟瀏覽器並設定訪問埠號為3000,並設定開啟檔案路徑是http://localhost:8080/src/,而且瀏覽器頁面無重新整理更新

注意:以上四個引數可以在webpack.config.js中配置,供瞭解

錯誤記錄:配置物件不存在,本例原因是devServer單詞錯誤,S應該大寫

 注意:webpack.config.js配置後瀏覽器會報錯,禁用熱模組替換

解決方法:

1:檢查devServer配置hot是否開啟

2:檢查是否安裝webpack並在配置檔案中匯入

 

2:配置檔案

module.exports匯出模組中new一個熱更新模組

 

八:html-webpack-plugin外掛使用

簡介:

外掛的基本作用就是生成html檔案。原理很簡單:將 webpack中`entry`配置的相關入口chunk 和 `extract-text-webpack-plugin`抽取的css樣式 插入到該外掛提供的`template`或者`templateContent`配置項指定的內容基礎上生成一個html檔案,具體插入方式是將樣式`link`插入到`head`元素中,`script`插入到`head`或者`body`中。

安裝:

作用:

1:自動在記憶體中根據指定頁面生成一個記憶體頁面

2:自動把打包好的bundle.js追加到頁面中

 

 九:loader配置處理css樣式表

簡介:

webpack 最出色的功能之一就是,除了 JavaScript,還可以通過 loader 引入任何其他型別的檔案。也就是說,以上列出的那些 JavaScript 的優點(例如顯式依賴),同樣可以用來構建網站或 web 應用程式中的所有非 JavaScript 內容。

直接引入會報錯:

注意:webpack預設只能打包處理JS型別檔案,無法處理其他非JS型別的檔案,如果要出路非JS型別的檔案,我們需要安裝第三方loader載入器

1:安裝兩個loader載入器:

2:安裝後開啟webpack.config.js這個配置檔案,在裡面新增一個配置節點,叫做module,他是一個物件,在這個modules物件上,有一個rules屬性,這個rules屬性是個陣列,存放了所有的第三方檔案的匹配和處理規則

3:css檔案中寫css樣式

4:入口檔案main.js引入css檔案

注意:webpack處理第三方型別檔案的過程

1:發現這個要處理的檔案不是JS檔案,然後就去配置檔案中,查詢有沒有對應的第三方loader規則

2:如果能找到對應的規則,就會呼叫對應的loader處理這種檔案型別

3:在呼叫loader時候是從後往前呼叫的

4:當最後一個loader處理完畢,會將處理的結果直接交給webpack進行打包合併,最終輸出到bundle.js中去

 十:loader配置處理less檔案

less簡介:

Less 是一門 CSS 預處理語言,它擴充套件了 CSS 語言,增加了變數、Mixin、函式等特性,使 CSS 更易維護和擴充套件。Less 可以執行在 Node 或瀏覽器端。

直接引入檔案會報錯:

解決方法:

1:安裝less-loader

2:less-loader執行需要依賴內部ess,所以需要安裝less

3:配置處理規則

4:入口檔案main.js引入less檔案

 十一:loader配置處理sass檔案

sass簡介:

sass是一種對css的一種提升,可以通過編譯生成瀏覽器能識別的css檔案。sass技術的檔案的字尾名有兩種形式:.sass和.scss。這兩種的區別在於.sass檔案對程式碼的排版有著非常嚴格的要求,而且沒有大括號,沒有分號。

問題:同上直接引用會報錯,需要安裝loader

解決方法:

1:安裝sass-loader

2:安裝node-sass

3:配置處理規則

4:引入使用