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

【Webpack配置全解析】打造你的专属构建流程️(4)

webpack 提供的 CLI 支持很多参数,例如 --mode,但更多的时候,我们会使用更加灵活的配置文件来控制 webpack 的行为。默认情况下,webpack 会读取 webpack.config.js 文件作为配置文件,但也可以通过 CLI 参数 --config 来指定某个配置文件。

配置文件中通过 CommonJS 模块导出一个对象,对象中的各种属性对应不同的 webpack 配置。配置文件中的代码必须是有效的 Node.js 代码。当命令行参数与配置文件中的配置出现冲突时,以命令行参数为准。

基本配置

以下是一些常见的 webpack 配置项:

  1. mode:编译模式,字符串,取值为 developmentproduction,指定编译结果代码运行的环境,会影响 webpack 对编译结果代码格式的处理。
  2. entry:入口,字符串或数组,指定入口文件。
  3. output:出口,对象,指定编译结果文件。
示例配置文件
const path = require('path');module.exports = {// 编译模式mode: 'development', // 或 'production'// 入口文件entry: './src/index.js', // 单个入口// entry: {//   main: './src/index.js', // 多个入口//   another: './src/another.js'// },// 出口文件output: {filename: 'bundle.js', // 输出文件名path: path.resolve(__dirname, 'dist') // 输出路径},// 模块规则module: {rules: [{test: /\.js$/, // 匹配 .js 文件exclude: /node_modules/, // 排除 node_modules 目录use: {loader: 'babel-loader' // 使用 Babel 转换 ES6 代码}},{test: /\.css$/, // 匹配 .css 文件use: ['style-loader', 'css-loader'] // 使用 style-loader 和 css-loader}]},// 插件plugins: [new HtmlWebpackPlugin({template: './src/index.html' // 使用模板生成 HTML 文件})],// 开发服务器devServer: {contentBase: './dist', // 静态文件根目录hot: true // 热模块替换}
};
详细解释
  1. mode:编译模式

    • development:开发模式,不会对代码进行压缩,适合开发环境。
    • production:生产模式,会对代码进行压缩和优化,适合生产环境。
  2. entry:入口文件

    • 单个入口:entry: './src/index.js'
    • 多个入口:entry: { main: './src/index.js', another: './src/another.js' }
  3. output:出口文件

    • filename:输出文件名。
    • path:输出路径,使用 path.resolve 确保路径是绝对路径。
  4. module:模块规则

    • rules:定义一组规则,用于处理不同类型的文件。
      • test:匹配文件的正则表达式。
      • exclude:排除某些文件或目录。
      • use:使用的加载器(loader)。
  5. plugins:插件

    • 插件用于执行更复杂的任务,如生成 HTML 文件、压缩代码等。
    • 例如,HtmlWebpackPlugin 用于生成 HTML 文件。
  6. devServer:开发服务器

    • contentBase:静态文件根目录。
    • hot:启用热模块替换(HMR),在开发过程中自动刷新页面。
使用配置文件
  1. 创建配置文件

    在项目根目录下创建 webpack.config.js 文件,内容如上所示。

  2. 安装必要的依赖

    npm install --save-dev webpack webpack-cli babel-loader @babel/core @babel/preset-env html-webpack-plugin
    
  3. 运行构建

    package.json 中添加一个 build 脚本:

    {"scripts": {"build": "webpack"}
    }
    

    然后运行:

    npm run build
    
  4. 启动开发服务器

    如果你配置了 devServer,可以通过以下命令启动开发服务器:

    npx webpack serve
    

总结

通过本课程,你已经基本掌握了如何使用 webpack 配置文件来控制构建过程。配置文件提供了更灵活的方式来管理复杂的构建任务,使得开发更加高效和便捷。

相关文章:

【Webpack配置全解析】打造你的专属构建流程️(4)

webpack 提供的 CLI 支持很多参数,例如 --mode,但更多的时候,我们会使用更加灵活的配置文件来控制 webpack 的行为。默认情况下,webpack 会读取 webpack.config.js 文件作为配置文件,但也可以通过 CLI 参数 --config 来…...

【SpringMVC】基础入门(1)

阿华代码,不是逆风,就是我疯 你们的点赞收藏是我前进最大的动力!! 希望本文内容能够帮助到你!! 目录 一:什么是Spring Web MVC 1:Servlet 2:总结 二:MVC …...

FFmpeg存放压缩后的音视频数据的结构体:AVPacket简介,结构体,函数

如下图的解码流程,AVPacket中的位置 FFmpeg源码中通过AVPacket存储压缩后的音视频数据。它通常由解复用器(demuxers)输出,然后作为输入传递给解码器。 或者从编码器作为输出接收,然后传递给多路复用器(mux…...

用接地气的例子趣谈 WWDC 24 全新的 Swift Testing 入门(三)

概述 从 WWDC 24 开始,苹果推出了全新的测试机制:Swift Testing。利用它我们可以大幅度简化之前“老态龙钟”的 XCTest 编码范式,并且使得单元测试更加灵动自由,更符合 Swift 语言的优雅品味。 在这里我们会和大家一起初涉并领略…...

#渗透测试#SRC漏洞挖掘#深入挖掘CSRF漏洞02

免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停…...

基于OpenCV的相机捕捉视频进行人脸检测--米尔NXP i.MX93开发板

本篇测评由优秀测评者“eefocus_3914144”提供。 本文将介绍基于米尔电子MYD-LMX93开发板(米尔基于NXP i.MX93开发板)的基于OpenCV的人脸检测方案测试。 OpenCV提供了一个非常简单的接口,用于相机捕捉一个视频(我用的电脑内置摄像头) 1、安…...

【Node-Red】使用文件或相机拍摄实现图像识别

使用相机拍照实现图像识别 首先需要下载节点 node-red-contrib-tfjs-coco-ssd,下载不上的朋友可以根据【Node-Red】最新版coco-ssd 1.0.6安装方法(windows)文章进行安装。 1、智能识别图片 使用本地文件的形式对图像进行识别 时间戳&…...

【Arcpy】提示需要深度学习框架代码

try:import torchimport arcgis相关库HAS_DEPS True except:HAS_DEPS Falsedef _raise_conda_import_error():arcpy.AddIDMessage("ERROR", 260005)exit(260005)if not HAS_DEPS:_raise_conda_import_error()...

【蓝桥杯 2021 省 B2】特殊年份

题目描述: 今年是 2021 年,2021 这个数字非常特殊, 它的千位和十位相等, 个位比百位大 1,我们称满足这样条件的年份为特殊年份。 输入 5 个年份,请计算这里面有多少个特殊年份。 输入格式 输入 5 行,每行一个 4 位十…...

【云原生开发】namespace管理的后端开发设计与实现

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...

威联通Docker Compose搭建NAS媒体库资源工具NAS Tools

文章目录 一、环境配置1-1 需要的配件1-2 环境安装及配置注意:获取PUID/PGID1-3 目录位置准备总结,这里我们要做5件事备注:Docker无法下载解决办法二、登录配件,进行配件连接和配置2-1 jackett设置2-2 qBittorrent设置!!!设置文件下载地址2-3 jellyfin设置2-4 NASTools设…...

【JAVA基础】MAVEN的安装及idea的引用说明

本篇文章主要讲解,maven的安装及集成在idea中进行构建项目的详细操作教程。 日期:2024年11月11日 作者:任聪聪 所需材料: 1、idea 2024版本及以上 2、maven 3.9.9安装包 3、一个空java springBoot项目,可以使用阿里云…...

【go从零单排】Rate Limiting限流

🌈Don’t worry , just coding! 内耗与overthinking只会削弱你的精力,虚度你的光阴,每天迈出一小步,回头时发现已经走了很远。 📗概念 在 Go 中,速率限制(Rate Limiting)是一种控制…...

解析Eureka的架构

1. 引言 1.1 Eureka的定义与背景 Eureka是由Netflix开发的一个RESTful服务,用于服务发现。它是微服务架构中的一个核心组件,主要用于管理服务的注册和发现。Eureka允许服务提供者注册自己的服务信息,同时也允许服务消费者查询可用的服务&am…...

AI变现,做数字游民

在数字化时代,AI技术的迅猛发展不仅改变了各行各业的生产方式,还为普通人提供了前所未有的变现机会。本文将探讨如何利用AI技术实现变现,成为一名数字游民,享受自由职业带来的便利与乐趣。 一、AI技术的变现潜力 AI技术以其强大…...

linux-vlan

# VLAN # 1.topo # 2.创建命名空间 ip netns add ns1 ip netns add ns2 ip netns add ns3 # 3.创建veth设备 ip link add ns1-veth0 type veth peer name ns21-veth0 ip link add ns3-veth0 type veth peer name ns23-veth0 # 4.veth设备放入命名空间,启动接口 ip link set n…...

前端跨域~简述

前言 :绿蚁新醅酒,红泥小火炉 第一:前端跨域(粗谈概念) 1. 疑惑 当前端请求后端接口不通,浏览器控制台出现类似信息,则需要解决跨域 Access to XMLHttpRequest at ‘http://47.100.214.160:10…...

GIN:逼近WL-test的GNN架构

Introduction 在 图卷积网络GCN 中我们已经知道图神经网络在结点分类等任务上的作用,但GIN(图同构神经网络)给出了一个对于图嵌入(graph embedding)更强的公式。 GIN,图同构神经网络,致力于解…...

NIST密码学未来展望:Naughty Step 上的 SHA-1、3DES 和 SHA-224

1. 引言 NIST 几十年来一直致力于推动密码学标准的发展,2024年10月,其发布了Transitioning the Use of Cryptographic Algorithms and Key Lengths 草案: 概述了 SHA-1(为160位哈希算法) 将在不久的将来退役&#xf…...

go 集成gorm 数据库操作

一、什么是gorm GORM 是一个用于 Go 语言的 ORM(对象关系映射)库,它提供了一种简单而强大的方式来与数据库进行交互。GORM 支持多种数据库,包括 MySQL、PostgreSQL、SQLite、SQL Server 等,并且提供了丰富的功能&…...

进程 线程 和go协程的区别

进程和线程是操作系统中两个重要的执行单元,理解它们的区别对于编程和系统设计非常重要。以下是它们的主要区别: ### 进程(Process) 定义:进程是一个正在执行的程序的实例,具有独立的地址空间。 资源&…...

STM32获取SHT3X温湿度芯片数据

目录 一、概述 二、单次数据采集模式的测量 1、配置说明 2、代码实现方式 三、周期性数据采集模式的测量 1、配置说明 2、代码实现方式 四、完整代码下载链接 一、概述 SHT3X是Sensirion公司推出的一款高精度、完全校准的温湿度传感器,基于CMOSens技术。它提…...

卸载miniconda3

1. 找到miniconda目录&#xff0c;删除。 rm -rf miniconda3/ 2. 编辑bashrc sudo vim .bashrc setup路径改回anaconda3的&#xff0c;注释掉“>>> conda initialize >>>”和"<<< conda initialize <<<"之间的miniconda的语…...

游戏中的设计模式及杂项

概述 如果要做以下游戏功能会用到哪些设计模式。比如创建一个人物角色&#xff0c;这个角色可以装备刀&#xff0c;然后角色可以用刀砍怪物&#xff0c;造成流血。 对于这个游戏功能&#xff0c;可以使用以下设计模式&#xff1a; 工厂模式&#xff08;Factory Pattern&#x…...

Docker网络和overlay的基础讲解

本人发现了两篇写的不错的文章&#xff1a;Docker网络 - docker network详解-CSDN博客&#xff0c;Docker 容器跨主机通信 overlay_docker overlay 网络-CSDN博客 因为这两篇文章中含有大量的例子&#xff0c;新手看起来毫不费力。于是我偷了个小懒&#xff0c;在本篇文章中没有…...

分布式数据库:深入探讨架构、挑战与未来趋势

引言 在数字化时代&#xff0c;数据已成为企业的核心资产。随着数据量的爆炸性增长和业务需求的多样化&#xff0c;传统的集中式数据库已难以满足现代应用对于高可用性、可扩展性和性能的需求。分布式数据库以其独特的优势&#xff0c;如数据的高可用性、容错性和可扩展性&…...

基于Springboot+Vue的仓库管理系统 (含源码数据库)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 这个系…...

基于立体连接与开源链动 2+1 模式的新商业路径探索

摘要&#xff1a;本文深入剖析了立体连接的内涵&#xff0c;包括其核心关键词、连接路径与主体&#xff0c;同时详细阐述了开源链动 2 1 模式、AI 智能名片和 S2B2C 商城小程序源码的特点与功能。在此基础上&#xff0c;深入研究这些要素的融合方式及其在商业实践中的应用&…...

开启鸿蒙开发之旅:核心组件及其各项属性介绍——布局容器组件

写在前面 组件的结构 rkTS通过装饰器 Component 和 Entry 装饰 struct 关键字声明的数据结构&#xff0c;构成一个自定义组件。 自定义组件中提供了一个 build 函数&#xff0c;开发者需在该函数内以链式调用的方式进行基本的 UI 描述 今天我们要学习的就是写在build 函数里的系…...

RabbitMQ 全面解析:语法与其他消息中间件的对比分析

1. 引言 在分布式系统和微服务架构中&#xff0c;消息中间件扮演着重要的角色。它们能够解耦服务、平衡负载、提高系统的可扩展性和可靠性。RabbitMQ 是其中广受欢迎的一种。本文将从 RabbitMQ 的基础概念、语法介绍、以及与其他消息中间件的对比角度&#xff0c;全面剖析其在…...

google建站/人工智能培训机构排名

0. 传送门 论文地址&#xff1a;https://arxiv.org/abs/2003.12929 github地址&#xff1a;https://github.com/fuy34/superpixel_fcn 1. 简介 超像素最直观的解释&#xff0c;就是把一些具有相似特性的像素“聚合”起来&#xff0c;形成一个更具有代表性的大“元素”。 目…...

如何做服装微商城网站/网站开通

这样的张总&#xff1a;你在家里的电脑上按了CTRL&#xff0b;C,然后在公司的电脑上再按CTRL&#xff0b;V是肯定不行的。即使同一篇文章也不行。不不&#xff0c;多贵的电脑都不行。还记得这个著名人物张总么&#xff1f;今天&#xff0c;Google Docs 云剪贴板正式发布。瞧瞧&…...

网站彩票怎么做/怎么接app推广的单子

MySQL的语句一共分为11步&#xff0c;最先执行的总是FROM操作&#xff0c;最后执行的是LIMIT操作。其中每一个操作都会产生一张虚拟的表&#xff0c;这个虚拟的表作为一个处理的输入&#xff0c;只是这些虚拟的表对用户来说是透明的&#xff0c;但是只有最后一个虚拟的表才会被…...

怎么做代刷网站/抖音seo公司

看网易英超上的话,切尔西守门员切赫对于"阿森纳如预料一般的丢分"感到很满意,真是很让人生气的一句话.阿森纳的故事我也不用多说了,只是想告诉告诉这些盲目的人一句话:在球场上,不到最后一分钟,就不能说已经分出胜负!当然,我们自己也要加油!!这个周末,把切尔西灭掉吧…...

php网站后台入口/凡科网站建设

为什么用 与平台无关,不需要直接调用,而是发消息到mq,解耦\异步 架构 启动...

门户网站开发需求/seo自学网app

通过手机物理返回键实现弹出层的隐藏 <template><div class"popup"><h1 click"popup">返回键隐藏弹出层</h1><div class"pop" :class"{up: flag}">弹出层文本<--点击关闭实现弹出层隐藏--><sp…...