当前位置: 首页 > news >正文

Webpack5 第二节

Webpack配置文件

在上面我们使用了npx webpack ./src/index.js -o ./dist --mode=development进行对项目的打包,但是这是否太长了。这时候我们就需要简化我们的命令行的选项,就使用到了我们的webpack配置文件。

首先我们要创建webpack.config.js

const {resolve} = require('path')
module.exports ={//打包环境配置mode: 'development',//入口文件entry: './src/index.js',//输出文件output: {path: resolve(__dirname, 'dist'),filename: 'main.js'},
}

然后执行以下命令即可快速打包

npx webpack

同时我们还可以在package.json里面添加脚本执行快速打包

添加这个命令之后,可以使用以下命令进行打包

npm run build

自动生成HTML文件和指定模版

生成一个html模版,并添加以下内容,在浏览器上打开可以看见输出结构

那我们该怎么自动生成html文件,这时候就需要用到html-webpack-plugin插件。该插件可以生成一个html文件,并在html中加载所有打包资源,便于服务器访问。

安装插件:

cnpm i html-webpack-plugin -D

在webpack.config.js里面的插件中添加html打包插件

    //插件配置plugins: [new HtmlWebpackPlugin()],

最后执行npm run build 发现出现了html的打包文件

指定生成html模板

//插件配置plugins: [new HtmlWebpackPlugin({template: './src/index.html', filename: 'index.html',title: 'webpack-demo'})],

但是我们发现其打包的html中的title标签并没有发送改变,如果需要其title标签发送更改的话需要使用EJS语法(也就是js的模版引擎)

<title><%=htmlWebpackPlugin.options.title%></title>

打包多个HTML页面和压缩

在html标签中编写以下内容,进行跳转设置

<body><div>小滴课堂</div><a href="index.html">首页</a><a href="mine.html">我的</a>
</body>

在webpack.config.js中添加这个内容

//插件配置plugins: [new HtmlWebpackPlugin({template: './src/index.html', filename: 'index.html',title: '首页'}),new HtmlWebpackPlugin({template: './src/index.html', filename: 'mine.html',title: '我的'})],

然后执行打包命令。

压缩

plugins: [new HtmlWebpackPlugin({template: './src/index.html', filename: 'index.html',title: '首页',minify: { //压缩htmlcollapseWhitespace: true,   //去掉空格removeComments: true,       //去掉注释removeAttributeQuotes: true //去掉属性引号}}),new HtmlWebpackPlugin({template: './src/index.html', filename: 'mine.html',title: '我的',})
],

CSS打包原理

css-loader,可以将css代码转为js代码,并合并到打包的js文件中

style-loader,可以将包含css内容的js代码,插入到html中style标签中

安装插件

cnpm i css-loader style-loader -D


配置打包插件

// 模块配置
module: {rules: [// 配置多个模块规则(配置loader、解析器等选项){// 匹配css文件test: /\.css$/i,// 指定加载器,加载顺序是从左到右或者是从下到上use: ['style-loader', 'css-loader'],},],
},

CSS代码抽离成单独文件

当我们运行时候有没有相关这个问题,如果我们的css过大是不是也会减少我们项目的运行速度,这时候就需要用到mini-css-extract-plugin,其可以将js文件中抽离出来css代码,减少js文件的体积;并且当js文件比较大的时候,可以避免阻碍页面的渲染,提升渲染速度。

安装插件

cnpm i mini-css-extract-plugin -D

配置插件

//引入
const MiniCssExtractPlugin=require('mini-css-extract-plugin')//loader配置(替换style-loader)
use:[MiniCssExtractPlugin.loader,'css-loader']//实例化插件
new MiniCssExtractPlugin({filename:'./css/main.css'
})

打包CSS预编译语言

css预编译语言主要有三个

  1. less
cnpm install less less-loader -D
  1. sass
cnpm install node-sass sass-loader -D
  1. stylus
cnpm install stylus stylus-loader -D

这次我们主要是进行less进行演示

首先我们需要在index.js文件中引入该模块

首先在webpack配置文件中配置规则

module: {rules: [{test: /\.less$/i,use: ['style-loader', 'css-loader', 'less-loader'],},],
},

我们需要创建一个main.less文件

@color:red;html,body{background: @color;
}

然后更改入口文件index.js

import './css/main.less'

对特殊CSS样式添加前缀

对于不同的浏览器有不一样的规则,所以为了兼容各个浏览器,我们需要安装一些插件方便我们在不同的浏览器上进行运行。

安装插件

cnpm i postcss-loader autoprefixer -D

配置插件,在文件的根目录下创建一个postcss.config.js文件

use: [MiniCssExtractPlugin.loader, 'css-loader','postcss-loader'   // 处理css兼容
]

在package.json添加以下内容

  "browserslist":["last 2 version",   "> 1%"              ],

打包后出现这样的结果,加上了浏览器前缀

CSS压缩

安装插件

cnpm i optimize-css-assets-webpack-plugin -D

在webpack.config.js中插件配置

// 引入
const OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin')//配置
plugins: [new OptimizeCssAssetsPlugin(),
],

http://www.dtcms.com/a/405959.html

相关文章:

  • npm、pnpm、npx 三者的定位、核心差异和「什么时候该用谁」
  • 在 C# .NETCore 中使用 MongoDB(第 2 部分):使用过滤子句检索文档
  • AWS Quicksight实践:从零到可视化分析
  • 微服务注册中心 Spring Cloud Eureka是什么?
  • websocket链接
  • 【oceanbase】Oracle模式查看pl慢sql
  • 电子商务网站规划的流程网站备案申请模板
  • 旺道网站优化公众号怎么推广
  • 内存卡标识全解析:从存储到性能的密码
  • 动态的魔法:列表与条件渲染
  • 乐清联科网站建设wordpress divi 数据
  • ARM单片机中断及中断优先级管理详解
  • python软件操作
  • c++_day2
  • 数据通信与计算机网络-交换
  • 2026考研时间,定了
  • 转:Ubuntu20.04安装NVIDIA驱动+CUDA超详细安装指南
  • 软件系统设计课程-Day1-从用户投诉到系统需求
  • 飞浪网站建设网站开发毕业设计任务书
  • JavaScript学习笔记(十二):call、apply和bind使用指南
  • Java外功基础(1)——Spring Web MVC
  • 【双机位A卷】华为OD笔试之【DP】双机位A-构建数列【Py/Java/C++/C/JS/Go六种语言】【欧弟算法】全网注释最详细分类最全的华子OD真题题解
  • 基于PyTorch深度学习无人机遥感影像目标检测、地物分类及语义分割实践技术应用
  • 基于PyTorch深度学习遥感影像地物分类与目标检测、分割及遥感影像问题深度学习优化实践技术应用
  • Kafka如何保证消息可靠性
  • 前端面经-高级开发(华为od)
  • 网站建设与 维护实训报告范文wordpress 上传网站吗
  • 基于深度学习神经网络协同过滤模型(NCF)的视频推荐系统
  • 网站建立时间软件开发5个过程
  • 【微实验】激光测径系列(六)MATLAB 实现 CCD 图像像素与实际距离标定