第二章 webpack基础用法

news2025/1/19 8:14:08

webpack核心概念之entry

 Entry用来指定webpack打包的入口,下图中webpack找到入口文件后,会将该文件所有的代码和非代码依赖都梳理出来,最终遍历完依赖树后生成打包后的静态资源。

 单入口:entry是一个字符串

module.exports={

        entry:'./path/to/my/entry/file.js'

}

 多入口:entry是一个对象

module.exports={       

        entry:{

                app:'./src/app.js',

                adminApp:'./src/adminApp.js'

        }

}

 webpack核心概念之output

output用来告诉webpack如何将编译后的文件输出到磁盘

单入口配置

module.exports={

        entry:'./path/to/my/entry/file.js',

        output:{

                filename:'bundle.js',

                path:__dirname+'/dist'

        }

}

多入口配置:通过占位符确保文件名称的唯一 

module.exports={       

        entry:{

                app:'./src/app.js',

                adminApp:'./src/adminApp.js'

        },

        output:{

                filename:'[name].js',

                path:__dirname+'/dist'

        }

}

webpack核心概念之loaders

webpack开箱即用只支持js和json两种文件类型,通过loaders娶支持其它文件类型并且把它们转化成有效的模块,并且可以添加到依赖图中。

loaders本身是一个函数,接受源文件作为参数,返回转换的结果。

常见的loaders

名称描述
babel-loader转换ES6、ES7等JS新特性语法
css-loader支持.css文件的加载和解析
less-loader将less文件转换成css
ts-loader将TS转换成JS
file-loader进行图片、字体等的打包
raw-loader

将文件以字符串的形式导入

thread-loader多进程打包JS和CSS

const path = require('path');

module.exports={
    output:{
        filename:'bundle.js'
    },
    module:{
        rules:[
            {test:/\.txt$/, use:'raw-loader'}
        ]
    }
};

test:指定匹配规则

use:指定使用的loader

webpack核心概念之plugins

插件用于bundle文件的优化,资源管理和环境变量注入,它作用于整个构建过程。

常见的plugins

名称描述
CommonsChunkPlugin将chunks相同的模块代码提取成公共js
CleanWebpackPlugin清理构建目录
ExtractTextWebpackPlugin将CSS从bunlde文件里提取成一个独立的CSS文件
CopyWebpackPlugin将文件或者文件夹拷贝到构建的输出目录
HtmlWebpackPlugin创建html文件娶承载输出的bundle
UglifyjsWebpackPlugin压缩JS
ZipWebpackPlugin将打包出的资源生成一个zip包
const path = require('path');

module.exports={
    output:{
        filename:'bundle.js'
    },
    plugins:[
        new HtmlWebpackPlugin({template:'./src/index.html'})
    ]
}

webpack核心概念之mode

mode用来指定当前的构建环境是:production、development还是none,设置mode可以使用webpack内置的函数,默认值为production。

Mode的内置函数功能

 

选项描述
development设置process.env.NODE_ENV的值为development,开启NamedChunksPlugin和NamedModulesPlugin。
production设置process.env.NODE_ENV的值为production,开启FlagDependencyUsagePlugin,FlagIncludedChunksPlugin,ModuleConcatenationPlugin,NoEmitOnErrorsPlugin,OccurrenceOrderPlugin,SideEffectsFlagPlugin和TerserPlugin。
none不开启任何优化选项。

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

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

相关文章

HCIP之MPLS

目录 MPLS MPLS --- 多协议标签交换 包交换 标签交换 包交换的变更 MPLS主要应用于三大领域 ​编辑 MPLS和包交换一样,其过程也可以分为控制层面和数据层面 标签交换过程(数据层流量) 标签解读 静态搭建LSP 创建路由条件 配置MPL…

arduino自用简单图形化编程仿真

傻瓜式编程真的很适合初学者 这边就不提fritzing和proteus的pcb设计了 就推荐几个简单的 1、linkboy 官方网址:http://linkboy.com.cn/index.html 也有官方教程点我 使用方法:官网下载软件 优点:元器库特别丰富,还具备语音识别、…

新网站多久被google收录?谷歌当天收录网站靠谱吗?

新网站多久被google收录? 答案是:24小时内。 为什么你做的外贸网站在Google搜索引擎一直不收录或者收录很慢。 其实有一个很关键的原因,那就是谷歌爬虫到底有没有到你网站的页面上去抓取数据。 很大可能是没有,当然你可以通过…

ctfshow web入门 nodejs 334-341(更新中)

前言 说实在也没啥好说的,希望大家要有勇气,向难题挑战,别像我一样自始至终都是一个菜狗,哎。 这里在刚开始的,我就有一个问题就是我发现刚开始使用的是require来导入模块,但是到了后面发现大部分使用的都是…

5G网络优化工程师入职企业,都有什么不同呢?

通信行业内的网络优化工程师后期入职主要是在设备商、运营商,运营商的合作单位。 熟悉通信行业的同学肯定了解这个行业最基本的可以分为运营商和设备商,运营商在国内就是移动、联通、电信,广电四家,这四家目前不管是薪资、职业发展…

自动语音识别模型whisper安装和初探

whisper介绍 whisper是OpenAI 最近发布的语音识别模型。OpenAI 通过从网络上收集了 68 万小时的多语言(98 种语言)和多任务(multitask)监督数据对 Whisper 进行了训练,whisper可以执行多语言语音识别、语音翻译和语言…

swing-扩展徽章组件JEBadge

前言 因为工作原因,好久没有写swing组件了,最近准备优化一个功能,希望有类似徽章的功能。 徽章在平时的app和h5 页面上经常常见 ,那么在swing中如何实现一个徽章功能呢。 技术分析 为什么不选择绘制方式,却选择JLayeredPane &a…

《程序员面试金典(第6版)》面试题 08.14. 布尔运算(动态规划,分治,递归,难度hard++)

题目描述 给定一个布尔表达式和一个期望的布尔结果 result,布尔表达式由 0 (false)、1 (true)、& (AND)、 | (OR) 和 ^ (XOR) 符号组成。实现一个函数,算出有几种可使该表达式得出 result 值的括号方法。 示例 1: 输入: s “1^0|0|1”, result 0 …

STM32 LCD-ADC-DMA实验

目录 1.1 STM32 DMA简介 1.2 STM32 DMA的操作 1.DMA的初始化 2. 初始化代码 3. 主函数代码 本文将向大家介绍 STM32 的 DMA。(如有错误,欢迎批评指正) 在本章中,我们将利用 STM32 的 DMA 来实现ADC1通道1内数据传送,并在 TFTLCD 模块上显…

图像处理学习——基于霍夫变换(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 霍夫变换是一种在图像中寻找直线、圆形以及其他简单形状的方法。 霍夫变换采用类似于投票的方式来获取当前图像内的形状集合&…

银河麒麟之语言设置和服务开机自启动设置

一、前言 银河麒麟操作系统作为国产操作系统,是目前国产化、信创等项目场景的主流操作系统之一,但它本质上还是基于现有的开源操作系统上的二次开发,银河麒麟服务器版是基于centos的,银河麒麟桌面版是基于debain的。既然是国产化系…

CAPL语言

1. CAPL简介 CAPL,Communication Access Programming Language,即通信访问编程语言类C语言2. CAPL主要用途 仿真节点或模块仿真时间报文、周期报文或者附加条件的重复报文使用PC键盘模拟操作按钮等人工操作事件仿真节点的定时或网络事件仿真多个时间事…

从编译器角度理解C++代码的编译和链接原理

在本文中,我们将探讨C代码的预处理、编译和链接过程。我们将详细介绍每个过程的作用和步骤,并通过代码演示来解释这个过程。 预处理 C代码预处理是将源代码转换为另一个源代码的过程,其中包括宏展开、条件编译、头文件包含等操作。预处理器…

Level3题目整理

文章目录L3-001 凑零钱L3-002 特殊堆栈L3-003 社交集群(并查集vector暴力⭐)L3-004 肿瘤诊断(三维bfs)L3-005 垃圾箱分布(多次dijkstra)L3-008 喊山(邻接表bfs🔺)L3-010 是否完全二叉搜索树&…

C++ STL学习之【list的模拟实现】

✨个人主页: 夜 默 🎉所属专栏: C修行之路 🎊每篇一句: 图片来源 A year from now you may wish you had started today. 明年今日,你会希望此时此刻的自己已经开始行动了。 文章目录🌇前言&am…

零售数据分析之操作篇12:子查询的应用

各位数据的朋友,大家好,我是老周道数据,和你一起,用常人思维数据分析,通过数据讲故事。 上期内容与作业 上一讲讲了占比相关内存计算的应用场景,包括占比、TOP占比、累计占比等,不同的占比&am…

sinGAN论文笔记

Background Knowledge 基于推理的视觉理论: 只根据图像数据本省不能对相对应的物体空间结构提供充分的约束,也就是说这是一个约束不充分的问题,因此为了理解图像的内容必须要有附加的约束条件(例如知道图中是哪一类物体的知识&am…

帮助中心能帮助企业解决什么问题?

帮助中心是企业在网站、应用程序或其他数字渠道上提供的一种资源,旨在帮助客户解决问题、回答常见问题并提供支持。一个完善的帮助中心可以为企业带来很多好处,包括提高客户忠诚度、提高满意度、降低客户支持成本等。 帮助中心能帮助企业解决的问题 提…

为什么会有JMM?从0到1一次性说清楚

JMM(Java Memory Model)是一种规范,定义了在多线程环境下Java程序中的内存访问行为。JMM保证了在多线程环境下程序的正确性,同时也允许编译器和处理器对指令进行优化,以提高程序的性能。 Java线程之间的通信由Java内存…

网络编程套接字(一)

学习任务: 我们先来认识端口号,区分好主机IP和端口号的区别,以及涉及到进程PID和端口号的区别。 然后简单认识一下TCP协议和UDP协议,这两个协议都是传输层的。接着了解什么是网络字节序,它有什么作用。然后是网络编程的…