1. 前言
1.1 Webpack是什麼
- 可能有很多的小夥伴對於這個Webpack既熟悉又陌生,有一些剛開始接觸vue的小夥伴在對專案進行打包的時候經常會使用到npm run build來進行打包,但是卻不瞭解Webpack裡面複雜的配置和功能。
- Webpack是一種前端資源構建工具,一個靜態模組打包器,在Webpack看來,前端所有資原始檔都會作模組處理,它將根據模組的依賴關係進行靜態分析,打包生成對應的靜態資源,Webpack官網上這張萬年不變的示意圖中其實也已經說明了一切。
- 接下來我們就一起來學習一下Webpack的基本概念和配置流程。
1.2 Webpack的五個核心
-
Entry 入口指示Webpack以哪個檔案為入口起點開始打包,分析構建內部依賴圖。
-
Output 輸出指示Webpack打包後的資源bundles輸出到哪裡。
-
Loader Loader讓Webpack能夠處理那些非js檔案。
-
Plugins 外掛功能,可以用於打包優化和壓縮,重新定義環境變數等功能。
-
Model 指示Webpack使用相應模式的配置,通過選擇 development, production 或 none 之中的一個,來設定 mode 引數,你可以啟用 webpack 內建在相應環境下的優化。
Model的配置資訊可以參考官網:https://webpack.docschina.org/configuration/mode/
2. Webpack的安裝配置入門
2.1 安裝
- 首先要確認的是,webpack是基於node.js的,確保安裝之前安裝了node.js
node.js安裝可以參考:https://www.runoob.com/nodejs/nodejs-install-setup.html
npm init -y //初始化
npm install webpack webpack-cli --save-dev //安裝webpack
2.2 配置
- 在資料夾中的src資料夾新建一個foo.js檔案
//foo.js
alert('你好呀 webpack')
- 在資料夾中新建一個webpack.config.js檔案
//webpack.config.js
var path = require('path');
module.exports = {
mode: '`production`',//環境
entry: './src/foo.js', //打包入口
output: { //打包出口
path: path.join(__dirname, 'dist'), //打包後檔案存放的位置
filename: '`index.js`', //打包後檔案生成的檔名
},
};
config的配置資訊可以參考官網:https://webpack.docschina.org/configuration/
- 此時 檔案目錄是這樣子的
2.3 開始打包
- 在package.json檔案中新增如下命令
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack"
},
- 此時我們在終端輸入npm run build命令就會將入口檔案(entry)進行打包輸出到(output)dist資料夾的位置
- 此時的目錄是這樣的
- 我們光看js是看不出效果的,在dist資料夾新建一個index.html頁面引用該打包後的js檔案試試
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>引用打包後的js</title>
</head>
<body>
<script src="./index.js"></script>
</body>
</html>
- 開啟該index.html 我們會發現效果已經出來啦!
- 至此 一個最簡單版的打包就完成了!!!
那麼有同學就會問了 啊。。。。這打包了個寂寞啊?這跟原本的html引用js有區別嗎???別急,上面只是演示了最簡單的打包流程,webpack的功能遠遠不止這樣
- 我們來另外一個例子 在foo.js同個資料夾內建立一個稱為 helloWebpack.js 的模組。
//helloWebpack.js
export default function () {
alert('hi webpack')
}
- 在foo.js引用它
//foo.js
import hello from './helloWebpack'
hello()
細心的同學可能會發現了現在如果直接在 html 頁面裡面引用 index.js 是無法執行的,瀏覽器是無法處理 ES6 模組或者是 common.js 規範的,那如果使用Webpack來處理入口來打包會怎麼樣呢?
- 此時我們在終端輸入npm run build命令 然後執行index.html檔案。
此時效果就出來了!!!Webpack 天生支援 ES6 import 和 export 的模組語法,可以直接使用。
3. 總結
上面講到了Webpack的基本配置和安裝打包,五個核心要點之中的其中兩個 下篇我們來學學如何使用Loader和plugins會發現更多Webpack的奧妙