webpack是為現代js程式準備的靜態模組打包工具
一:關於對webpack的理解
可以將其認為是一個電腦主機板,由於使用js作為原始碼,因而其可以預設編譯js程式碼(別種型別的檔案可以依靠loaders或plugins),因為其底層由node提供支援,因而其支援編譯common/esmodule的匯入方式。而其被三大框架使用的原因是生態————提供了近乎所有檔案的編譯工具,這也使得webpack對整個前端工程的支援近乎全面。
二:安裝
想要安裝使用webpack,應首先確保安裝node
截至當前,webpack更新到了5,筆者也使用的webpack5,node最低需12.x.x,可以命令列下使用node -v
檢視node版本
命令列下輸入以下命令:
//全域性安裝
npm install webpack webpackcli -g
//區域性安裝(推薦)
npm install webpack webpackcli -D
- 問題1:推薦區域性安裝的原因
有時候可能專案的webpack版本不同,不同的webpack可能會存在不相容
- 問題2:為什麼要安裝webpackcli,
webpackcli並不是必需的,三大框架並沒有安裝webpackcli,安裝webpackcli是由於當前命令列裡需要webpackcli執行webpack內的命令且需要一些引數時,換句話說,此刻webpack需要webpackcli執行帶引數的 命令,而webpackcli又依賴webpack(互相依存)
讀者也可以指定webpack版本:
// 如:npm install webpack@3.6.0
npm install webpack@xxxxx
三:嘗試寫一個小demo
- 如果全域性安裝了webpack:
全域性環境下,webpack
命令可以在任一目錄中使用
為演示webpack同時支援es6匯入匯出和common匯入匯出,以下兩個非index.js檔案使用兩種方式
新建專案目錄:
—mydemo
______src
——————__index.js
——————__common.js
——————__esmodule.js
——index.html
//common.js
// node的匯出流
const common_export = function(){
return '我是node的匯出流'
}
module.exports = {
common_export
}
//esmodule.js
// es6的匯出流
export function es_export(){
return '我是esmodule的匯出流'
}
// index.js
import { es_export } from './esmodule'
const { common_export } = require('./common')
console.log(es_export(),common_export());
此時可以在mydemo目錄命令列下輸入webpack
即可生成一個dist目錄,且內部生成一個main.js的檔案,即如今專案結構顯示如下:
—mydemo
______dist
——————__main.js
______src
——————__index.js
——————__common.js
——————__esmodule.js
——index.html
假設讀者有live-server這個外掛且index.html中引入了./dist/main.js這個檔案,在live on browers以後控制檯會出現列印訊息:
此時可以做個總結:
- webpack天然支援js的兩種匯入匯出流
- 在輸入webpack後會預設將當前目錄下src目錄中的index.js作為入口,且會預設在當前目錄下生成dist目錄並將打包後的js檔案合併成./dist/main.js
- webpack天然支援生成靜態檔案,只需在index.html中引用打包後的main.js檔案即可
- 區域性使用
區域性環境下,想要執行webpack命令,需要將webpack作為node中的一個包使用,此時,需要使用npm包管理器,換句話說,需要node支援
想要使用node環境,需要使用
npm init
命令生成package.json目錄,這個目錄記錄當前npm的一些資訊,可以在這裡檢視已安裝的包目錄
如果目錄中有中文名,可以使用npm init -y
命令,這是由於node對中文的支援並不好
注:於全域性目錄此時保持一致
- 在新建目錄下進行npm初始化
npm init -y
- 下載webpack包
npm install webpack -D
-D是指開發時要用到的依賴,-S是生產環境也要用到的依賴
如果此時package.json中顯示有webpack包名,則說明區域性安裝成功
注意:此時此刻想要打包檔案,不應使用webpack
命令,因為一但使用webpack
命令,則會使用全域性的webpack進行打包————這與初衷不符
如何使用區域性webpack命令打包專案?
- 可以使用.bin
使用.bin預設查詢node-module下的webpack
.\node_modules\.bin\webpack
- 使用npx
使用npx將優先使用區域性webpack,同方法1一樣
npm webpack
- package.json的script欄位中,使用命令(推薦使用)
如果是這種方式,可以使用npm run build
命令,此時將預設執行區域性的webpack命令(本質上,所有區域性查詢的命令都是查詢node-modules裡的安裝的包並且執行這個包)
下一記:webpack本身的配置以及其loader配置