Webpack 中 Plugin 的作用是什么?常用 plugin 有哪些?

说说webpack中常见的Plugin?解决了什么问题?- 题目详情 - 前端面试题宝典

1、plugin 的作用 

Plugin 是一种计算机应用程序,它和主应用程序互相交互,以提供特定的功能

是一种遵循一定规范的应用程序接口编写出来的程序,只能运行在程序规定的系统下,因为其需要调用原纯净系统提供的函数库或者数据。

webpack 中的 plugin 也是如此,plugin 赋予其各种灵活的功能,例如打包优化、资源管理、环境变量注入等,它们会运行在 webpack 的不同阶段(钩子 / 生命周期),贯穿了 webpack 整个编译周期。

目的在于解决 loader 无法实现的其他事。

配置方式:一般情况,通过配置文件导出对象中 ​​​​​​​plugins ​​​​​​​属性传入 ​​​​​​​new 实例对象。如下所示:

const HtmlWebpackPlugin = require('html-webpack-plugin'); // 通过 npm 安装
const webpack = require('webpack'); // 访问内置的插件
module.exports = {...plugins: [new webpack.ProgressPlugin(),new HtmlWebpackPlugin({ template: './src/index.html' }),],
};

2、常见的 Plugin

html-webpack-plugin简化 HTML 文件创建 (依赖于 html-loader);

在打包结束后,⾃动生成⼀个 html 文件,并把打包生成的 js 模块引⼊到该 html 中

mini-css-extract-plugin分离样式文件,将 CSS 提取到单独的⽂件中,⽀持按需加载载

(替代extract-text-webpack-plugin); 

uglifyjs-webpack-plugin:通过 UglifyES 压缩 ES6 代码,不支持 ES6 压缩 (Webpack4 以前);

terser-webpack-plugin: 支持压缩 ES6 代码(Webpack4);

webpack-bundle-analyzer可视化 webpack 输出文件的体积;

optimize-css-plugin:压缩 CSS;

copy-webpack-plugin:复制文件或目录到执行区域;

如 Vue 的打包过程中,如果我们将一些文件放到 public 的目录下,那么这个目录会被复制到 dist 文件夹中 

define-plugin定义环境变量;

允许在编译时创建配置的全局对象; (Webpack4 之后指定 mode 会自动配置)

是一个 webpack 内置的插件,不需要安装 

webpack-parallel-uglify-plugin:多核压缩,提高压缩速度(多进程执行代码压缩,提升构建速度

并行压缩 JavaScript 代码,提高构建速度,特别是在大型项目中。

clean-webpack-plugin: 删除(清理)构建目录;

ignore-plugin:忽略部分文件;

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

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

相关文章

CSDN每日一题学习训练——Java版(两数相加、二叉树的锯齿形层序遍历、解数独)

版本说明 当前版本号[20231106]。 版本修改说明20231106初版 目录 文章目录 版本说明目录两数相加题目解题思路代码思路补充说明参考代码 二叉树的锯齿形层序遍历题目解题思路代码思路参考代码 解数独题目解题思路代码思路补充说明参考代码 两数相加 题目 给你两个 非空 的…

蓝桥杯官网填空题(图书排列)

题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 将编号为 1 ~ 10 的 10 本书排放在书架上,要求编号相邻的书不能放在相邻的位置。 请计算一共有多少种不同的排列方案。 运行限制 public class Main…

Java序列化和Json格式的转化

Java序列化和JSON格式的转换都是在不同格式之间实现对象的传输,并在数据节点之间方便地进行信息交换,其中主要区别在于它们的工作原理和应用场景。 Java序列化是将 Java 对象转换为字节流(二进制格式的数据),以便在网…

动态IP和静态IP哪个安全,该怎么选择

随着互联网的普及,越来越多的人开始关注网络安全问题。其中,IP地址作为网络通信中的重要组成部分,也成为了人们关注的焦点。 在IP地址中,动态IP和静态IP是两种不同的分配方式,它们各自具有不同的特点,那么…

如何在 TFRecord 文件上训练 Keras 模型实现黑色素瘤分类器

简介 + 设置 TFRecords 存储一系列二进制记录,线性读取。它们是存储数据的有用格式,因为它们可以有效地读取。在此处了解有关 TFRecords 的更多信息 。 我们将探索如何轻松加载黑色素瘤分类器的 TFRecords。 import tensorflow as tf from functools import partial import…

论文阅读—— CEASC(cvpr2023)

arxiv:https://arxiv.org/abs/2303.14488 github:https://github.com/Cuogeihong/CEASC 为了进一步减轻SC中的信息损失,使训练过程更加稳定,我们在训练过程中除了稀疏卷积之外,还保持了正常的密集卷积,生成…

基于SSM的社区智慧养老监护管理平台

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

Android---彻底掌握 Handler

Handler 现在几乎是 Android 面试的必问知识点,大多数 Adnroid 工程师都在项目中使用过 Handler。主要场景是子线程完成耗时操作的过程中,通过 Handler 向主线程发送消息 Message,用来刷新 UI 界面。 下面我们来了解 Handler 的发送消息和处…

docker相关知识

docker-compose https://www.runoob.com/docker/docker-compose.html Compose 使用的三个步骤: 使用 Dockerfile 定义应用程序的环境。 使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。 最后,执行 …

吃透BGP,永远绕不开这些基础概述,看完再也不怕BGP了!

你们好,我的网工朋友。 总有人在私信里抱怨,BGP实在是太难了! 一是这玩意儿本来就很复杂,需要处理大量的路由信息和复杂的算法;再一个是需要你有一定的实战经验才能深入理解运作。 虽然BGP确实有一定难度&#xff0c…

【漏洞复现】Metinfo6.0.0任意文件读取漏洞复现

感谢互联网提供分享知识与智慧,在法治的社会里,请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现代码审计漏洞点 1.5、深度利用EXP编写 1.6、漏洞挖掘1.7修复建议 1.1、漏洞描述 漏洞名称:MetInfo任意文件…

Node.js |(五)包管理工具 | 尚硅谷2023版Node.js零基础视频教程

学习视频:尚硅谷2023版Node.js零基础视频教程,nodejs新手到高手 文章目录 📚概念介绍📚npm🐇安装npm🐇基本使用🐇生产依赖与开发依赖🐇npm全局安装🐇npm安装指定包和删除…

【Spring Boot 源码学习】JedisConnectionConfiguration 详解

Spring Boot 源码学习系列 JedisConnectionConfiguration 详解 引言往期内容主要内容1. RedisConnectionFactory1.1 单机连接1.2 集群连接1.3 哨兵连接 2. JedisConnectionConfiguration2.1 RedisConnectionConfiguration2.2 导入自动配置2.3 相关注解介绍2.4 redisConnectionF…

linux文章导航栏

linux文章导航栏 问价解压缩大全Linux tar 备忘清单zip文件解压缩命令全 ubuntuubuntu18.04安装教程\搜狗输入法\网络配置教程Linux静态库和动态库 shellShell脚本命令

Linux内核分析(六)--处理器调度基本准则和实现介绍

目录 一、引言 二、进程调度的层次 ------>2.1、高级调度(作业调度) ------>2.2、中级调度(内存调度) ------>2.3、低级调度(进程调度) ------>2.4、三者的联系 三、调度的时机、切换与过程 ------>3.1、无法发送调度与切换的情况 ------>3.2、应该…

链表面试OJ题(1)

今天讲解两道链表OJ题目。 1.链表的中间节点 给你单链表的头结点 head ,请你找出并返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 示例 输入:head [1,2,3,4,5] 输出:[3,4,5] 解释:链表只有一个…

windows idea本地执行spark sql避坑

本地安装了IDEA,并配置好了相关POM,可以在本机使用sparkSession连接数据,并在数据库执行sql,在idea展示执行结果。 但是,如果将数据的查询结果建立到spark中,再展示,就会报错 Error while run…

Chromebook文件夹应用新功能

种种迹象表明 Google 旗下的 Chromebooks 近期要有大动作了。根据 Google 团队成员透露,公司计划在 Chrome OS 的资源管理器中新增“Recents”(最近使用)文件,以便于用户更快找到所需要的文件。 种种迹象表明 Google 旗下的 Chro…

RabbitMQ消息可靠性投递

RabbitMQ消息投递的路径为: 生产者 —> 交换机 —> 队列 —> 消费者 在RabbitMQ工作的过程中,每个环节消息都可能传递失败,那么RabbitMQ是如何监听消息是否成功投递的呢? 确认模式(confirm)可以监…

【实战-08】flink 消费kafka自定义序列化

目的 让从kafka消费出来的数据&#xff0c;直接就转换成我们的对象 mvn pom <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information …