中文文件: https://webpack.docschina.org/concepts/
基於 webpack 4
1. 為什麼需要構建工具?
- 轉換 ES6 語法
- 轉換 JSX
- CSS 字首補全, 前處理器
- 壓縮混淆
- 圖片壓縮
- ...
2. 基礎用法
- webpack 預設使用
webpack.config.js
配置檔案. 可以使用webpack --config xxx.js
指定配置檔案.
2.1 幾個概念
- bundle: 打包最終生成的檔案
- chunk: 每個 chunk 是由多個 module 組成,可以通過程式碼分割成多個 chunk
- module: webpack 中的模組(js、css、圖片等等)
3. webpack 安裝
注意: 使用 webpack 之前需要安裝 node.js
# 不推薦 全域性安裝
npm install --save-dev webpack webpack-cli
或
npm i -D webpack webpack-cli
4. webpack 核心概念
4.1 entry(指定打包入口)
- 單入口: 適合單頁應用. entry 的值是 字串.
- 多入口: 適合多頁應用. entry 的值是 物件.
module.exports = {
// 多頁面應用
entry: {
index: './src/js/index.js',
login: './src/js/login.js'
},
...
// 單頁面應用
entry: './src/js/index.js',
}
4.2 output(指定打包輸出)
指定 打包的輸出目錄和檔名.
module.exports = {
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'dist')
},
...
}
4.3 loaders
webpack 原生值支援 js 和 json 的解析. 通過 loaders 去處理不支援的型別.
module.exports = {
...
module: {
rules: [
{
test: /\.js$/,
// 排除 node_modules 資料夾裡的 js 檔案
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env'],
}
}
},
]
}
}
4.4 plugins
外掛用於 bundle 檔案的優化, 資源管理和環境變數注入. 作用於整個構建過程.
module.exports = {
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'dist')
},
...
plugins: [
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery',
}),
]
}
4.5 mode(模式)
中文文件: https://webpack.docschina.org/concepts/mod...
mode 用來指定當前的構建環境: production development 和 none
. 預設值為 production
本作品採用《CC 協議》,轉載必須註明作者和本文連結