webpack学习04--打包图片资源
2021-03-01 14:29
标签:common har exports dirname icp type htm object loader 1.使用npm下载组件 2.配置webpack.config.js文件 3.准本3张图片 4.编写相关文件 index.less index.js index.html 5.执行webpack打包命令 6.生成build.js和index.html文件 新生成的index.html 页面效果: webpack学习04--打包图片资源 标签:common har exports dirname icp type htm object loader 原文地址:https://www.cnblogs.com/asenyang/p/14403421.htmlnpm i file-loader -D
npm i url-loader -D
const { resolve } = require(‘path‘);
const HtmlWebpackPlugin = require(‘html-webpack-plugin‘);
module.exports = {
entry: ‘./src/index.js‘,
output: {
filename: ‘build.js‘,
path: resolve(__dirname, ‘build‘),
publicPath: ‘./‘//webpack5 需要加入此行设置!!!!!!!
},
module: {
rules: [
{
test: /\.less$/,
// 要使用多个loader处理用use
use: [‘style-loader‘, ‘css-loader‘, ‘less-loader‘]
},
{
// 问题:默认处理不了html中img图片
// 处理图片资源
test: /\.(jpg|png|gif|JPG)$/,
// 使用一个loader
// 下载 url-loader file-loader
loader: ‘url-loader‘,
options: {
// 图片大小小于8kb,就会被base64处理
// 优点: 减少请求数量(减轻服务器压力)
// 缺点:图片体积会更大(文件请求速度更慢)
limit: 8 * 1024,
// 问题:因为url-loader默认使用es6模块化解析,而html-loader引入图片是commonjs
// 解析时会出问题:[object Module]
// 解决:关闭url-loader的es6模块化,使用commonjs解析
esModule: false,
// 给图片进行重命名
// [hash:10]取图片的hash的前10位
// [ext]取文件原来扩展名
name: ‘[hash:10].[ext]‘
}
},
{
test: /\.html$/,
// 处理html文件的img图片(负责引入img,从而能被url-loader进行处理)
loader: ‘html-loader‘
}
]
},
plugins: [
new HtmlWebpackPlugin({
template: ‘./src/index.html‘
})
],
mode: ‘development‘
};
angular.jpg
react.png
vue.jpg
#box1{
width: 100px;
height: 100px;
background-image: url(‘./vue.jpg‘);
background-repeat: no-repeat;
background-size: 100% 100%;
}
#box2{
width: 200px;
height: 200px;
background-image: url(‘./react.png‘);
background-repeat: no-repeat;
background-size: 100% 100%;
}
#box3{
width: 300px;
height: 300px;
background-image: url(‘./angular.jpg‘);
background-repeat: no-repeat;
background-size: 100% 100%;
}
import ‘./index.less‘
DOCTYPE html>
html lang="en">
head>
meta charset="UTF-8">
title>Titletitle>
head>
body>
div id="box1">div>
div id="box2">div>
div id="box3">div>
body>
html>
webpack
DOCTYPE html>
html lang="en">
head>
meta charset="UTF-8">
title>Titletitle>
head>
body>
div id="box1">div>
div id="box2">div>
div id="box3">div>
script src="./build.js">script>body>
html>