介绍
Webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler)。当 Webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个 bundle
本章节主要介绍Webpack的核心概念的Demo使用示例,建议读者查看之前请阅读Webpack的官方文档也可以查看中文地址文档
Webpack版本: 3.9.0
代码GitHub地址: https://github.com/gulijian/webpack-learning-example
How to use
Install webpack
1 | $ npm i -g webpack |
Clone the repo.
1 | $ git clone https://github.com/gulijian/webpack-learning-example.git |
Install the dependencies
1 | # 进入每个章节根目录,执行 npm install |
Open the each chapter index.html
Index
chapter4-1 (source)
style-loader use
处理css,以 style 标签形式引入css
app.js
1 | import './css/app.css' |
app.css
1 | html { |
index.html
1 |
|
webpack.config.js
1 | var path = require('path') |
chapter4-2 (source)
style-loader/url use
处理css,以标签形式引入css
app.js
1 | import './css/app.css' |
app.css
1 | html { |
index.html
1 |
|
webpak.config.js
1 | var path = require('path') |
chapter4-3 (source)
css-loader and css-module use
处理css,支持 css-module 形式
app.js
1 | import app1 from './css/app1.css' |
app1.css
1 | .box { |
app2.css
1 | .borderBox { |
index.html
1 |
|
webpack.config.js
1 | var path = require('path') |
chapter5-1 (source)
UglifyJsPlugin use
使用 UglifyJsPlugin 插件; 不打包没有使用的 js
util.js
1 | export function a (){ |
app.js
1 | import { a } from './common/util.js' |
index.html
1 |
|
webpack.config.js
1 | var webpack = require('webpack') |
app.js 中只使用了 util.js 中的 a 函数 打包的时候只会打包 a 函数;因为 b 和 c 函数没有使用到,则不会被打包
chapter6-1 (source)
url-loader use
图片文件处理
app.js
1 | var img1 = document.getElementById('img1') |
index.html
1 |
|
webpack.config.js
1 | var path = require('path') |
图片 小于 30kb 会变成base64编码,大于 30kb 会生成图片地址
1 | <img id="img1" src="6443347e97d394b23b05746b2fe41cd1.jpg"> |
chapter7-1 (source)
ProvidePlugin use
处理第三方 JS 库,方式一:( jquery 作为npm的一个module)
app.js
1 | $('#app').append('hello jquery') |
index.html
1 |
|
webpack.config.js
1 | var path = require('path') |
chapter7-2 (source)
处理第三方 JS 库,方式二:(引入本地的 jquery 库)
app.js
1 | $('#app').append('hello jquery') |
index.html
1 |
|
webpack.config.js
1 | var path = require('path') |
如果 jquery 在CDN上,直接引入即可
chapter8-1 (source)
clean-webpack-plugin use
每次打包清除原先的打包目录
app.js
1 | var app = document.getElementById('app') |
index.html
1 |
|
webpack.config.js
1 | var path = require('path') |