Webpack5 快速入门

news2024/11/24 3:24:51
  • 1. webpack 介绍

  • 2. webpack 基本使用

  • 3. webpack 5大核心概念

  • 4. webpack 配置文件

  • 5. webpack 运行脚本

  • 6. webpack 处理样式资源

    • 一、处理 css 资源

    • 二、处理 less 资源

    • 三、处理 scss 资源

    • 四、处理 stylus 资源

  • 7. webpack 处理图片资源

  • 8. webpack 文件输出目录配置

  • 9. webpack 自动清空上次打包文件

1. webpack 介绍


webpack 官网: https://webpack.js.org

一、webpack  是什么?

webpack 是当前市场上最流行的打包工具

webpack 是代码编译工具,webpack 是一个用于现代 J**aScript 应用程序的静态模块打包工具,俗称: 打包工具

二、为什么需要打包工具?

开发时,我们会使用框架(Vue、React),ES6 模块化语法,Less/Sass 等 css 预处理器等语法进行开发。这样的代码浏览器是不能识别的,要想在浏览器运行必须经过编译,变成浏览器能识别的 JS、CSS 等语法,才能正常运行。

所以,我们需要打包工具帮我们完成这件事,除此之外,打包工具还能压缩代码、做兼容性处理,提升代码性能等

2. webpack 基本使用


构建 JS 模块化语法

├── public│   └── index.html└── src    ├── js    │   └── utils.js    └── main.js

src/js/utils.js

export const sum = (...args) => {    return args.reduce((sum, item) => sum += item, 0)};

src/main.js

import { sum } from './js/utils';console.log(sum(1, 2, 3, 4, 5));

在 public/index.html 中引入 src/main.js

<script src="../dist/main.js"></script>

初始化 npm 项目,安装 webpack 依赖,进行打包

npm init -ynpm i webpack webpack-cli -Dnpx webpack ./src/main.js --mode=development

3. webpack 5大核心概念


Webpack 的配置是围绕 5 大核心概念展开的,这五个概念非常重要

一、entry (入口)

指示 Webpack 从哪个文件开始打包

二、output (输出)

指示 Webpack 打包完的文件输出到哪里去,以及如何命名等

三、loader (加载器)

webpack 本身只能处理 js,json 等资源,其他资源(vue,css,scss)需要借助相应的 loader,Webpack 才能解析

四、plugins (插件)

扩展 Webpack 的功能

五、mode (模式)

开发模式 (development)、生产模式 (production)

4. webpack 配置文件


创建配置文件,配置 entry 入口

在项目根目录下新建文件: webpack.config.js,文件名称必须是这个,文件内容如下所示:

module.exports = {    entry: "./src/main.js"};

output 输出

以下配置示例中的 output 中 path 和 filename 是默认值

// nodejs 核心模块,专门用来处理路径问题const path = require("path")module.exports = {    // 入口    entry: "./src/main.js", // 相对路径    // 输出    output: {        // 输出路径        // __dirname 是 nodejs 的变量,代表当前文件所在目录        path: path.resolve(__dirname, 'dist'), // 绝对路径        // 文件名        filename: "main.js",    }};

5. webpack 运行脚本


修改 package.json 文件,添加一个运行脚本。懂得都懂,添加后就可以使用 npm run build 命令进行打包了

"scripts": {    "build": "webpack --mode=development"},

6. webpack 处理样式资源


一、处理 css 资源


创建 src/css/index.css 文件,文件内容如下:

.box1 {    width: 150px;    height: 150px;    color: red;    font-size: 18px;    background: lightgreen;}

在 src/main.js 中导入 css 文件

import "./css/index.css"

执行打包命令,你就会看到以下错误提示。这是因为 webpack 默认无法处理 CSS 资源,需要安装并配置 css 加载器

ERROR in ./src/css/index.css 1:0Module parse failed: Unexpected token (1:0)You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders

安装加载 css 资源所需的 loader【吐槽: webpack 官网这个坑货,给的安装命令中没有 style-loader】

npm install css-loader style-loader -D

修改 webpack.config.js 配置文件,检测 css 文件,使用 loader 进行处理

module.exports = {    // 加载器    module: {        rules: [            // loader 配置            {                // 只检测 .css 后缀的文件                test: /\.css$/i,                // loader 的执行顺序: 从右到左                // css-loader 将 css 资源编译成 commonjs 的模块到 js 中                // style-loader 将 js 中的 css 通过创建 style 标签添加到 html 文件中生效                use: ["style-loader", "css-loader"],            },        ],    },};

二、处理 less 资源


创建 src/less/index.less 文件,文件内容如下:

@color: purple;.less {    width: 150px;    height: 150px;    color: @color;    font-size: 20px;    background: lightcoral;}

在 src/main.js 中导入 less 文件

import "./less/index.less"

安装加载 less 资源所需的 loader

npm install less less-loader --s**e-dev

修改 webpack.config.js

module.exports = {    module: {        rules: [            {                test: /\.less$/i,                use: [                    // compiles Less to CSS                    "style-loader",                    "css-loader",                    "less-loader",                ],            },        ],    },};

三、处理 scss 资源


创建 src/scss/index.sass 文件,文件内容如下:

$color: bluebody    .sass        width: 150px        height: 150px        color: $color        font-size: 20px        background: yellowgreen

创建 src/scss/index.scss 文件,文件内容如下:

$color: black;body {    .scss {        width: 150px;        height: 150px;

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/64802.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]计算机毕业设计基于Springboot校园租赁系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【STM32学习(4)】STM32简述定时器

一、什么是定时器 有计时和定时功能的仪器组件——对于芯片来说&#xff0c;定时器含有计时和定时功能&#xff0c;片内模块——TIM 二、STM32F4xx系列定时器分类 片内外设定时器&#xff08;14个&#xff09; 高级定时器&#xff1a;TIM1、TIM8通用定时器&#xff1a;TIM2…

SASE和零信任--傻傻分不清楚

零信任和SASE&#xff0c;分别来自于两家世界级咨询公司Forrester与Gartner。 首先&#xff0c;Forrester提出零信任&#xff0c;成为近十年来最重要的安全创新理念。然后&#xff0c;Gartner提出SASE&#xff08;安全访问服务边缘&#xff09;&#xff0c;在零信任的基础上面…

[附源码]计算机毕业设计天狗电子商城系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【浅学Java】SpringBoot 配置文件

SpringBoot 配置文件1. 配置文件的作用2. 配置文件的格式.properties配置文件的格式.properties配置文件的缺点.yml配置文件的格式.yml配置文件的优点3. 配置文件的分类3.1 两种类型配置文件3.2 用户自定义配置项4. 配置信息读取4.1 自定义配置信息读取4.2 系统配置信息读取4.3…

MySQL高可用方案之MHA

目录 一、简介 二、MHA特点 三、搭建MySQL MHA 1、安装MHA 2、在所有服务器上配置无密码认证 3、在manager节点上配置MHA 4、 manager节点编辑配置文件&#xff0c;管理 mysql 节点服务器 5、在Master服务器上手动开启vip 6、在 manager 节点上测试 ssh 无密码认证 7、…

安装JDK8绿色版

前言&#xff1a;官网提供的JDK8只有安装包&#xff0c;没有绿色免安版&#xff0c;而我们开发时需要根据需求使用不同的JDK版本&#xff0c;使用安装包安装过程会写入注册表&#xff0c;不方便便携式使用&#xff0c;还会附带安装Java 8 Update&#xff0c;会自动更新。而绿色…

详细介绍NLP中文分词原理及分词工具

基于词表的分词方法 正向最大匹配算法FMM 从左到右扫描文本&#xff0c;得到词的最大匹配。 案例分析&#xff1a; 用正向最大匹配法对“秦皇岛今天晴空万里”进行中文分词&#xff0c;见下表。 词典 &#xff1a;“秦皇岛”“岛”“今天”“天晴”“晴空万里”“万里”………

《数据在外设中的存储》

【一】磁盘的物理结构 我们现在很少看到磁盘了&#xff0c;我们电脑使用的大部分使用的是nvme协议的固态硬盘&#xff0c;差一点的使用的是sata固态接口的硬盘了&#xff0c;磁盘在我们电脑上尤其是笔记本电脑上是很少存在的&#xff0c;难道磁盘真的穷途末路了吗&#xff1f;显…

confluence 6.7.1-x64.bin安装

confluence数据库的配置文件&#xff1a;# cat /var/atlassian/application-data/confluence/confluence.cfg.xml 1&#xff1a; 安装包 jdk 2&#xff1a; 执行./atlassian-confluence-6.7.1-x64.bin 设置安装目录和数据目录 启动 service confluence start 3&#xff…

[附源码]计算机毕业设计社区住户信息管理系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

连阿里P8都赞不绝口的“分布式架构原理设计笔记”到底有多牛

在分布式系统中&#xff0c;一次业务处理可能需要多个应用来实现&#xff0c;比如用户发送一次下单请求&#xff0c;就涉及到订单系统创建订单&#xff0c;库存系统减库存&#xff0c;而对于一次下单&#xff0c;订单创建与减库存应该是要同时成功或者同时失效&#xff0c;但在…

matlab中的隐马尔可夫模型(HMM)实现

隐马尔可夫模型&#xff08;HMM&#xff09;简介 隐马尔可夫模型&#xff08;HMM&#xff09;是一个在你观察到的输出顺序&#xff0c;但不知道状态序列模型产生输出的过程。 去年&#xff0c;我们为一家公司进行了短暂的咨询工作&#xff0c;该公司正在构建一个主要基于隐马…

借助PyCharm在代码中自动添加作者、日期

名人说&#xff1a;闻道有先后&#xff0c;术业有专攻。——韩愈 Code_流苏(CSDN) o(‐&#xff3e;▽&#xff3e;‐)o很高兴你打开了本篇博客&#xff0c;跟着步骤一起去设置吧&#xff01; Pycharm安装教程请点这里 目录一、背景缘由二、设置方法三、补充一、背景缘由 在用…

左神:中级提升班5

1.斐波那切数列套路 1.1F(N)F(N-1)F(N-2) 1.2F(N)3F(N-1)-4F(N-3)6F(N-5) 1.3生牛问题 1.4达标串数量 1.5取最少的木棍 2.背包问题 3.找工作 4.判断是否符合人类正常书写 1.斐波那切数列套路 1.1F(N)F(N-1)F(N-2) 线性代数&#xff1a; 1. 利用初始项可以吧a,b,c,d算出来 2…

【面试题】https协议

1. http和https的区别 http是明文传输&#xff0c;敏感信息容易被中间劫持。https在http协议的基础上&#xff0c;增加了加密的特性&#xff0c;数据被劫持了也无法解密。现代浏览器已经开始强制使用https协议。 2. https的加密方式 2.1 对称加密 对称加密&#xff1a;使用…

[激光原理与应用-38]:《光电检测技术-5》- 光学测量基础 - 光调制

目录 一、光调制概述 1.1 什么是光调制 1.2 激光的光调制方法 1.3 光调制的调制 二、直接调制法 三、腔内调制法 3.1 被动调制&#xff1a; 3.2 主动调制&#xff1a; 四、腔外调制法 五、新型光调制 5.1 基于强度调制 5.2 基于相位调制 5.3 基于偏振调制 一、光调…

【前端】面试题6~10

目录 一、说一说BFC 1、BFC的概念 2、BFC布局规则 3、BFC形成的条件 3、BFC解决能的问题 4、BFC的其他 5、总结 二、说一说Vuex是什么&#xff0c;每个属性是干嘛的&#xff0c;如何使用 &#xff1f; 1、Vuex是什么 2、Vuex 的属性 3、使用方法 4、简单总结 三、说…

Jsp基础了解(二)

文章目录Jsp基础了解&#xff08;一&#xff09;7&#xff0c;MVC模式和三层架构7.1 MVC模式7.2 三层架构7.3 MVC 和 三层架构8&#xff0c;案例8.1 环境准备8.1.1 创建工程8.1.2 创建包8.1.3 创建表8.1.4 创建实体类8.1.5 准备mybatis环境8.2 查询所有8.2.1 编写BrandMapper8.…

无模型深度强化学习算法

无模型深度强化学习算法&#xff1a;直接训练类神经网络模型来表示策略。这里的“无模型”指的是不建立环境模型&#xff0c;而非不建立任何机器学习模型。这样的策略模型可以直接用策略梯度&#xff08;policy gradient&#xff09;[3]训练&#xff0c;但是策略梯度的变异性太…