webpack打包全过程以及遇到图片不显示问题解决方法
前言
Webpack是前端构建工具 前端构建工具就是把开发环境代码转化称运行环境代码。开发环境的代码要通过混淆压缩后才能上线运行,这样代码占用内存较小,
一、Webpack
一般需要构建工具处理的几种情况
- 代码压缩
将js、css代码混淆压缩,代码体积更小,运行更快 - 编译语法
编写CSS时要使用less,Sass,编写js时使用ES6,TypeScript等,这样标准目前无法兼容浏览器,因此需要构建工具编译, - 模块化
css和js模块化无法兼容浏览器,为了方便开发环境可以使用既定的模块语法,需要构建工具将模块化语法编译为浏览器可识别形式,使用webpack、Rollup等处理JS模块化。
1、运用场景
1、vue,angular,react都可以通过webpack构建
2、全部可访问页面数目不超过500个
2、安装配置
终端运行 步骤 npm
npm i webpack webpack-cli --save-dev
yarn
yarn add jquery
yarn add webpack -D
二、案例演示
1、需要安装的工具
终端运行
yarn add html-webpack-plugin -D
yarn add webpack-dev-server
yarn add css-loader style-loader -D
yarn add url-loader file-loader -D
yarn add less-loader less -D
2.配置准备
创建src文件并在里面添加相应的css,js,img文件 在src同层编写webpack.config.js,babel.config.js,index.html,app.js、work.js、 修改package.json,
app.js
import './css/1.css'
import './css/2.less'
let app = require("./work");
work.js
let age = 18
let getname = () => {
return 'ssss'
}
webpack.config.js内容
const ph = require('path')
const HtmlWebpackPlugin = require("html-webpack-plugin")
module.exports = {
module:{
rules: [
{
test: /\.css$/,
use: ["style-loader", "css-loader"],
},
{
test: /\.(png|jpg|gif)$/,
use: [
{
loader: "url-loader",
options: {
limit: 8196,
outputPath: "image",
esModule: false,
},
},
],
type: 'javascript/auto',
},
{
test: /\.less$/,
use: ["style-loader","css-loader","less-loader"]
},
{
test: /\.js$/,
exclude: /node_modules/,
use: "babel-loader",
}
]
},
mode: 'development',
devServer: {
host: "127.0.0.1",
port: 10086,
open: true,
compress: true,
},
entry: ph.resolve('./src/app.js'),
output: { path: ph.resolve('./dist'),
filename: "main.js"
},
plugins: [
new HtmlWebpackPlugin({
template: ph.resolve("./index.html"),
})
]
}
babel.config.js
在项目根目录创建babel.config.js文件,配置如下 作用: 使得babel-loader可以找到preset做代码降级处理
module.exports = {
presets: ['@babel/preset-env']
}
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>test</title>
</head>
<body>
<div>test</div>
<ul>
<li>涂料</li>
<li>花瓣</li>
</ul>
<div id="a"></div>
</body>
</html>
package.json
{
"scripts": {
"build": "webpack",
"serve": "webpack-dev-server"
},
"devDependencies": {
"@babel/core": "^7.17.8",
"@babel/preset-env": "^7.16.11",
"babel-loader": "^8.2.4",
"css-loader": "^6.7.1",
"file-loader": "^6.2.0",
"html-webpack-plugin": "^5.5.0",
"less": "^4.1.2",
"less-loader": "^10.2.0",
"style-loader": "^3.3.1",
"url-loader": "^4.1.1",
"webpack": "^5.71.0",
"webpack-cli": "^4.9.2"
},
"dependencies": {
"jquery": "^3.6.0",
"webpack-dev-server": "^4.7.4"
}
}
3、资源文件(src)准备
one.css
li {
color: red;
}
#one {
width: 150px;
height: 150px;
background: url("../img/a.jpg");
background-size: 100% 100%;
}
ss.less
ul {
li {
border: 1px solid red;
}
}
三、效果
右边为终端 1、项目配置和资源准备完成 在终端运行
npm run build
npm run serve
四 总结
webpack打包图片不显示问题
1.jpg大小为3.1kb,file-loader中配置的limit是8192,小于limit时,一切正常的话,dist文件夹下不会生成图片文件,应该在src中以base64字符串填充。大于limit时,会生成图片文件,src中以路径填充。 解决方法为添加 esModele:false,type:‘javascript/auto’ 这两个。 具体详情请点击查看url-loader打包后出现图片打不开、资源重复
|