webpack 常用loader & plugin
说明:
plugin相当于生命周期一样,在webpack运行到某个时刻的时候做一些事情。
汇总
1 | { |
webpack
webpack is a bundler for modules 模块打包工具。使之可支持ES Module,CommonJS,CMD,AMD。
webpack-cli
可以使我们在命令行中得意操作webpack指令。
file-loader
1.打包图片资源
1 | { |
2. 打包字体文件
1 | { |
url-loader
将图片(较小的)转化为base64格式,打包进js,而较大的则打包成文件。是file-loader
的升级版。
1 | { |
css-loader & style-lader
css样式文件打包处理。
1 | { |
1. importLoaders配置
假如一个scss文件中又引入另一个scss文件,如果不加配置,则只经过css-loader
->style-loader
处理,如果添加importLoaders: 2
,表示通过@import引入的样式文件,至少通过之前的两个loader处理,即postcss-loader
->scss-loader
->css-loader
->style-loader
。
2. modules
设置modules: true
开启css模块化,避免产生css样式互相影响。
1 | import style from './index.css'; |
postcss-loader
打包css的样式时,进行预处理,可通过postcss.config.js
配置。
使用autoprefixer
,打包css3新特性时会带上浏览器兼容的前缀。
1 | // postcss.config.js |
html-webpack-plugin
打包结束后,自动生成html,并自动将打包生成的js引入到这个html文件中。
1 | const HtmlWebpackPlugin = require('html-webpack-plugin'); |
1. template
template
配置默认模版,将以这个html文件(src/index.html
)为基础进行打包,src/index.html
中的定制化结构都会打包到新的html中。
clean-webpack-plugin
1 | const CleanWebpackPlugin = require('clean-webpack-plugin'); |
问题汇总
1. 为什么项目下安装webpack,运行webpack报错找不到?
1 | webpack -v |
原因:
因为默认从全局环境查找webpack, 因为我们并没有从全局安装webpack所以报错。如果是package.json
中scripts指令执行,则不会出现这个问题,因为默认优先从工程中查找webpack包。
解决:
使用npx指令
1 | npx webpack -v |
2. 直接修改webpack.config.js
文件名,不能正常打包
原因:
webpack指令默认查询的webpack.config.js
,如果想执行正常操作需要通过--config
修改指令。
解决:
1 | webpack --config 你修改后的文件路径 |
3. webpack警告The 'mode' option has not been set, ....
原因:
在webpack.config.js
中没有设置对应的mode
解决:
1 | modules.exports = { |
4. rules中多个loader使用use处理的机制
use的值是一个数组,秉承从下到上,从右往左执行的机制,比如 use: ['style-loader', 'css-loader']
,一定是先经过css-loader
处理,再经过style-loader
处理。