对下述代码的配置
{
"name": "01.test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"build": "webpack",
"dev": "webpack-dev-server"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"autoprefixer": "^7.0.0",
"clean-webpack-plugin": "^3.0.0",
"css-loader": "^5.2.7",
"file-loader": "^6.2.0",
"html-webpack-plugin": "^4.5.2",
"node-sass": "^5.0.0",
"postcss-loader": "^4.3.0",
"sass-loader": "^10.3.0",
"style-loader": "^2.0.0",
"url-loader": "^3.0.0",
"webpack": "^4.46.0",
"webpack-cli": "^3.3.12",
"webpack-dev-server": "^3.11.3"
}
}
const { resolve } = require('path');
const autoprefixer = require('autoprefixer')
module.exports = {
mode: 'development',
entry: './main.js',
output: {
filename: 'boundle.js',
path: resolve(__dirname, 'dist'),
},
module: {
rules: [
{
test: /\.css$/,
loader: [
'style-loader',
'css-loader',
{
loader: 'postcss-loader',
options: {
postcssOptions: {
plugins: [ autoprefixer],
},
},
},
],
},
{
// 处理图片
test: /\.(png|jpg|gif)$/i,
use: [
{
loader: 'url-loader',
options: {
name: '[name].[ext]',
outputPath: 'imgs/',
limit: 8192,
},
},
],
},
{
test: /\.scss$/,
loader: [
'style-loader',
'css-loader',
{
loader: 'postcss-loader',
options: {
postcssOptions: {
plugins: [autoprefixer],
},
},
},
'sass-loader',
],
},
// 处理字体图标文件
{
test: /\.(eot|svg|ttf|woff)/,
use: {
loader: 'file-loader',
options: {
outputPath: 'fonts/'
}
}
}
],
},
devtool: 'source-map',
plugins: [],
};
一、对图片进行处理
(1)图片的处理file-loader
import './js.img'
.img 结尾的文件;file-loader
处理图片文件
- options对
file-loader
进行配置
**【name】**
: 原先的图片名字;**【ext】**
:原先扩展名
outputPath:imgs/
表示打包后将图片放入imgs
文件夹下
(2)图片处理url-loader
npm i url-loader -D
: 处理之后,图片变为base64
格式的编码:
(2.1)url-loader 和 file-loader 对比
npm i url-loader file-loader -D
二者结合使用
打包后文件对比:
:::info
url-loader
:
图片 -> base64格式的字符串 -> 放入<img src="base64...">
缺点:
图片体积过大,base64体积变大、打包出的 js 文件体积变大,通过limit
配置项进行配置,设置图片动态转换
:::
:::info
file-loader
图片 -> 打包到一个文件夹中 -> 返回图片的路劲<img src="图片的路劲">
解析html 资源时,会发起http请求图片资源,性能降低
:::
http请求:
file -> 单独 .jpg 文件 -> 多发送一次http请求
url -> base64 -> 少发http请求
limit: 20480
20kb 配置: 大于2048 表示打包成 文件形式;小于2048 打包成 base64 格式
mode: development
生产模式;(默认开发模式)二、对css、less、scss进行处理配置
2.1 对.css 文件处理
loader:npm i style-loader css-loader -D
;import './index.css'
处理.css
结尾的文件css-loader
: :::info
- 处理 在 .js 文件中
import 'index.css'
处理 .css 文件中引用另一个 .css 文件时的处理 :::
style-loader
: 将css 处理之后放入<style></style>
标签里2.2 对scss文件处理
npm i sass-loader@10.0.0 sass@1.3.0 -D
将.scss代码 -> .css代码 -> style-loader -> 放入<style>
2.3 对css的兼容性配置:
(1). postscss-loader + autoprofixer
npm i postscss-loader -D
处理css兼容新的问题 ->transfrom -> -webkit-transfrom
;
Autoprefixer
加上css
厂商前缀npm i autoprefixer -D
- 如果浏览器版本比较新,css支持好,就不需要加入前缀,
所以此时需要对兼容的浏览器版本进行配置
- 在
package.json
中对浏览器版本进行控制:{
"browserslist": [
"> 1%", // 表示市场份额大于1%的浏览器
"last 2 version" // 上两个版本
]
}
扩展:
对loader配置:通过对象的形式importLoaders
处理scss中@import './other.scss'
现在 不配置 也可以 .. 具体分析importLoaders:
表示: 在scss中引入另一个scss,在解析scss之前还要走前面两个loader..