目录
一、Webpack4 快速上手
- yarn init --yes
- yarn add webpack webpack-cli --dev
- yarn webpack --version 查看版本
- yarn webpack 打包(可以在 package.json 中添加 "build":"webpack" 修改打包指令)
- yarn build打包 会有 dist文件夹
二、Webpack4 配置文件
const path = require('path')
module.exports = {
entry: './src/main.js',
output: {
filename: 'bundle.js',
path: path.join(__dirname, 'output')
}
}
三、Webpack4 工作模式
- 默认情况下,打包项目是 product 生产模式(压缩形式),里面包含优化,比如压缩
- 我们是用生产模式 yarn webpack --mode development(未压缩形式),还有 none 原始模式,具体的差异在官网可查看:Mode | webpack
- 也可以在 webpack.config.js 中配置 mode 模式
module.exports = {
mode:'development',
entry:'./src/index.js' //制定webpack 打包入口路径
output: { //设置输出文件位置
filename:'bundle.js', //输出文件名称
path:path.join(__dirname, 'output') // //输出文件目录(必须是绝对路径)
}
}
四、Webpack4 资源模块加载
- yarn add css-loader --save
- yarn add style-loader --dev
- yarn add file-loader --dev
- yarn add file-loader --dev //Webpack 文件资源加载器
- yarn add url-loader -dev // Webpack URL 加载器
- 小文件使用 Data URLs,减少请求次数
- 大文件单独提取存放,用 file-loader ,提高加载速度
- yarn add babel-loader @babel/core @babel/preset-env --dev //处理ES6新特性
- yarn add html-loader --dev
const path = require('path')
module.exports = {
mode:'none',
entry:'./src/main.css' //制定webpack 打包入口路径
output: { //设置输出文件位置
filename:'bundle.js', //输出文件名称
path:path.join(__dirname, 'output') // //输出文件目录(必须是绝对路径)
pub licPath: 'dist/'
},
module: {
rules : [
{
test:/.js$/,
use:{ //超出 10KB 文件单独提取存放,小于 10KB 文件转换为 Data URLs嵌入代码中
loader:'babel-loader',
options: {
presets: ['@babel/preset-env']
}
}
},
{
test:/.css$/,
use:[
'style-loader',
'css-loader'
]
},
{
test:/.png$/,
use:{ //超出 10KB 文件单独提取存放,小于 10KB 文件转换为 Data URLs嵌入代码中
loader:'url-loader',
options: {
limit: 10 * 1024 //10kb
}
}
},
{
test:/.html$/,
use:[
loader:'html-loader',
options: {
attrs:['img:src', 'a:href']
}
]
},
]
}
}
五、Webpack4 常用加载器分类
- 编译类 css-loader
- 文件操作类 file-loader
- 代码检查类 eslint-loader
- babel-loader @babel/core @babel/preset-env --dev
六、Webpack4 核心工作原理
Loader 机制是webpack的核心
- Loader 负责资源文件从输入到输出的转换
- 对于同一个资源可以一次使用多个Loader
七、 Webpack4 插件机制介绍
增强 Webpack 自动化能力
- Webpack 常用插件 (Webpack + Plugin)
- 自动清除目录 clean-webpack-plugin
- 自动生成使用 bundle.js 的 HTML