在阅读这篇文章之前,请确认你已经了解了webpack的基本常识
安装依赖
多人协作时,可以在项目根目录下新建一个.npmrc
文件用来指定npm源
shell
1 | 统一团队的npm源 |
项目搭建
样式 静态资源 (图片第三方字体) es6+ (vue react ts)
样式:借助css-loader处理css语法,借助style-loader使用css
js
1 | module: { |
js
1 | 根目录下新增`postcss.config.js` |
package.json
中"browserslist":["last 2 versions","> 1%"]
用于配置autoprefixer
自动兼容版本(兼容所有浏览器最近的两个大版本,全球市场占有率大于1%的浏览器)
更多点击 –> Browserslist
安装mini-css-extract-plugin
用来做样式提取,将css样式抽离成css文件
shell
1 | npm install mini-css-extract-plugin -D |
修改webpack.config.js
中的配置
js
1 | const minicssExtractPlugin = require('mini-css-extract-plugin')//先进行引用 |
图片/字体⽂件处理:
- file-loader
- url-loader
url-loader
和file-loader
都可以⽤来处理本地的资源⽂件,如图⽚、字体、⾳视频等。功能也是类似的,不过url-loader
可以指定在⽂件⼤⼩⼩于指定的限制时,返回DataURL
,不会输出真实的⽂件,可以减少昂贵的⽹络请求。
shell
1 | 安装 |
js
1 | // 使用 |
file-loader更多相关
如果需要使⽤图⽚压缩功能,可以使⽤image-webpack-loader
。
字体
plain
1 | //css |
hash
hash
策略在输出的文件名后添加
[hash]
,可以用[hash:8]
控制文件名中hash长度
以项目为单位,项目内容改变,则会生产新的hash,内容不变hash不变使用
chunkhash
以
chunk
为单位,当一个文件内容改变,则整个chunk组的模块hash都会改变[name]-[chunkhash:8].[ext]
contenthash
以自身内容为单位