webpack
webpack前端工程化的具体解决方案
功能:前端模块化开发,代码压缩,处理浏览器端js的兼容 ,性能优化
基本使用:
安装
npm i webpack@5.42.1 webpack-cli@4.7.2 -D
-S 是--save 开发上线都要使用 安装到package.js里的dependencies
-D 是--save-dev 开发使用 安装到package.js里的devDependencies
创建
module.exports = { mode:'development' 

webpack中的打包默认约定
path.join()是拼接路径__dirname正在执行的文件的目录的绝对路径 wabpack插件
安装

html-webpack-pluagin 插件
将index.html文件复制一份直接放到内存里
//0.安装
npm i html-webpack-plugin@5.3.2 -D
const HtmlPlugin = require('html-webpack-plugin')const htmlPlugin = new HtmlPlugin({ template: './src/index.html',//指定源文件的存放路径 filename:'./index.html',//指定生成文件的存放路径})module.exports = { mode: 'development', plugins: [htmlPlugin],//3.通过plugins节点,使htmlPlugin插件生效}它还可以在内存里自动添加js文件


devServer的配置
module.exports = { mode: 'development', plugins: [htmlPlugin],//通过plugins节点,使htmlPlugin插件生效 devServer: { open: true,//初次打包完成后,自动打开默认浏览器 //在http的协议中如果端口号80,则可以被省略 port: 80,//配置端口号 host:'127.0.0.1',//指定运行的地址 }} loader
webpack.config.js文件,module.rules数组中,是否配置了对应的loader加载器css-loader)style-loader)cnpm i style-loader@3.0.0 css-loader@5.2.6 -D
配置:
module: { rules: [ //定义了不同模块对应的loader { test: /\.css$/, use: ['style-loader','css-loader']} ] } 打包处理less
安装:
npm i less-loader@10.0.1 less@4.1.1 -D
配置:
{ test: /\.less$/, use: ['style-loader', 'css-loader', 'less-loader'] }base64图片
img 标签是先拿标签,在去请求地址
优点:不用加载两次,
缺点:图片增大(不适合大图片,只适合小图片)
安装:
cnpm i url-loader@4.1.1 file-loader@6.2.0 -D
配置:
{ test: /\.jpg|png|gif$/, use: 'url-loader? limit=3000&outputPath=images' }limit是控制图片转换base64大小的,如果大于这个值就不转换,小于就转换
outputPath 是打包后的文件存放地址
js高级语法打包
安装:
cnpm i babel-loader@8.2.2 @babel/core@7.14.6 @babel/plugin-proposal-decorators@7.14.5 -D
配置:
{ test: /\.js$/, use: 'babel-loader',exclude:/node_modules/ } exclude:是不包括然后创建一个babel.config.js文件 里面的配置项为:
module.exports = { plugins: [['@babel/plugin-proposal-decorators'],{legacy:true}]} 打包发布
在package.js文件中添加build配置:
"scripts": { "dev": "webpack serve ", //serve是在内存上 "build": "webpack --mode production" //在物理磁盘上 },--mode优先级高,prodction是生产模式
每次打包自动清理以前的文件
clean-webpack-plugin包
给文件配置别名
resolve: {//解析 alias: {//别名 '@':path.join(__dirname,'./src/') }}

浙公网安备 33010602011771号