对下述代码的配置
{"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: 2048020kb 配置: 大于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..


