webpack项目配置

news2024/9/22 15:28:51

30.webpack——webpack5新特性(启动、持久化缓存、资源模块、URIs、moduleIds和chunkIds、tree shaking、nodeJs的polyfill被移除、模块联邦)_俞华的博客-CSDN博客_chunkids

webpack和vite的区别 - 简书

vite介绍 | 与其他构建工具做比较,分析vite预构建和热更新的原理 - 掘金

https://webpack.docschina.org/blog/2020-10-10-webpack-5-release/#major-changes-long-term-caching


模块module配置

1、处理图片、文字模块配置

            {
                test: /\.(png|jpe?g|ico|pdf)$/,
                use: 'url-loader?limit=40000&name=images/[name].[chunkhash].[ext]'
            },
            {
                test: /\.(mp3|gif|svg|eot|ttf|svg|woff2?)$/,
                use: 'file-loader?name=images/[name].[chunkhash].[ext]'
            },

2、js,jsx的模块配置

thread-loader | webpack 中文文档

使用时,需将此 loader 放置在其他 loader 之前。放置在此 loader 之后的 loader 会在一个独立的 worker 池中运行。

每个 worker 都是一个独立的 node.js 进程,其开销大约为 600ms 左右。同时会限制跨进程的数据交换。

请仅在耗时的操作中使用此 loader!

  {
                test: /\.(js|jsx)$/,
                use: [
                    {
                        loader: 'thread-loader',
                        options: {
                            workers: 1,
                            workerParallelJobs: 50,
                            workerNodeArgs: ['--max-old-space-size=1024'],
                            poolRespawn: false,
                            poolTimeout: 2000,
                            poolParallelJobs: 50,
                            name: 'js-thread-pool'
                        }
                    },
                    {
                        loader: 'babel-loader',
                        options: {
                            plugins: [
                                [
                                    'react-css-modules',
                                    {
                                        exclude: 'node_modules',
                                        webpackHotModuleReloading: true,
                                        filetypes: {
                                            '.less': {
                                                syntax: 'postcss-less'
                                            }
                                        },
                                        handleMissingStyleName: 'ignore',
                                        generateScopedName: '[name]__[local]___[chunkhash:base64:5]'
                                    }
                                ]
                            ],
                            cacheDirectory: true
                        }
                    }
                ],
                include: [
                    paths.src,
                    paths.lib
                ]
            },

babel-loader:用于处理js,jsx脚本代码的边缘打包,对于一些es6或者高级语法浏览器不能识别的情况,借助babel-loader进行转译,实际babel-loader是webpack和babel的一个中间牵手人,实际生效的还是babel。react项目常用的babel配置如下:

babel.config.js配置文件



module.exports = {
    'presets': [
        [
            '@babel/preset-env',
            {
                'modules': false,
                'targets': {
                    'browsers': [
                        '> 1%',
                        'last 2 versions',
                        'ie >= 10'
                    ]
                },
                'useBuiltIns': 'usage',
                'corejs': 3
            }
        ],
        '@babel/preset-react'
    ],
    'plugins': [
        [require('./config/babel-plugin-oneui-common.js')],
        '@babel/plugin-transform-runtime',
        'react-hot-loader/babel',
        'react-require',
        '@babel/plugin-proposal-object-rest-spread',
        [
            '@babel/plugin-proposal-decorators',
            {
                'legacy': true
            }
        ],
        '@babel/plugin-proposal-class-properties',
        [
            'module-resolver',
            {
                'alias': {
                    'src': './src'
                }
            }
        ]
    ]
};

3、多进程打包(资源并行解析)

thread-loader和happyPack打包原理类似

 

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

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

相关文章

【ONE·C || 字符串和内存函数】

总言 C语言:字符串和内存函数使用介绍。 文章目录总言1、求字符串长度:strlen1.1、基本介绍1.2、演示说明1.2.1、strlen输出1.2.2、strlen返回值1.3、模拟实现strlen1.3.1、计数器写法1.3.2、递归写法1.3.3、指针-指针写法2、长度不受限制的字符串函数2.…

educoder数据结构 图 无错AC代码版

目录 第1关:实现图的宽度优先遍历 任务描述 相关知识 编程要求 测试说明 输入输出格式说明: 样例输出 Ac_Code 第2关:实现图的深度优先遍历 任务描述 相关知识 测试说明 输入输出格式: 样例输出 AC_Code 第1关&am…

2023年flag

开头总是让人那么茫然无措,在这里记录梳理上一年。以期找到前进的方向,迈开新一年的第一步,然后不断前行。 回顾上一年 首先想到的第一件事,11月换了个工作依然是Java开发10月份准备了软件工程中级考试并考过读了几本技术的书籍…

【设计模式】我终于读懂了享元模式。。。

祝大家开工大吉🧧🧧🧧!!主页有红包哦 点这里 文章目录祝大家开工大吉🧧🧧🧧!!主页有红包哦 [点这里](https://blink.csdn.net/details/1469531)🧧…

Python基础学习 -- 进程锁

一、join函数的作用1、等子进程执行完,主进程再结束2、将子进程都存储到一个列表,每个子进程都调用一下join方法if __name__"__main__":print("我是主线程")stime.time()a[2,3,4]b[] #存储创建好的进程for i in a:pProcess(targetfu…

入门算法,这篇文章你得看!(java、算法基础、常用算法)

想用Java快速入门算法?这篇文章你得看! 提示:本文章适合想要入门算法,并且想 “快速” 达到一定成果的同学们阅读~ 文章非常非常非常长(可能是你见过最长的博客)!!! 阅读…

Authing 身份云入选《数字身份治理与管理(IGA)应用实践指南》报告

身份是物理实体映射在网络空间的一串数字代码,是数字世界的通行证。掌控了统一的权威数字身份就等同掌控了实体在数字空间的行为。网络业务的快速发展,使业务与安全深度融合到一起,并使数字身份成为数字化经济建设的重要基石。同一实体可以更…

【数据结构初阶】第一篇——算法性能分析

算法效率 什么是大O 时间复杂度分析 概念 大O渐进表示法 不同数据规模的差异 复杂表达式的化简 O(logn)中的log是以什么为底? 案例分析 算法为什么会超时 递归算法的时间复杂度 空间复杂度分析 概念 案例分析 递归算法的性能分析 代码的内存消耗 算法效率 算法…

如何使用VMware虚拟机(带你快速了解)

前言 📜 “作者 久绊A” 专注记录自己所整理的Java、web、sql等,IT技术干货、学习经验、面试资料、刷题记录,以及遇到的问题和解决方案,记录自己成长的点滴 目录 前言 一、什么是虚拟机 二、VMware的简介 1、大概介绍 2、详…

数据结构 第四章 串

她:点击收听 1 基本知识点 1、串中的元素是字符 2、操作的对象往往不再是单个数据元素,而是一组数据元素(子串) 3、串:由零个或多个字符组成的有限序列 4、子串:串中任意连续个字符组成的子序列 5、包含子串的串又被称为该子串的主串 6、真…

LeetCode[685]冗余连接II

难度:困难题目:在本问题中,有根树指满足以下条件的 有向 图。该树只有一个根节点,所有其他节点都是该根节点的后继。该树除了根节点之外的每一个节点都有且只有一个父节点,而根节点没有父节点。输入一个有向图&#xf…

Linux 笔记3

5.Linux 的网络信息5.1主机名称5.1.1临时修改:hostname 新名字 (需要重新进入才能显示新名字)reboot重启虚拟机5.1.2永久:vi /etc/hostname5.2DNS解析dns解析域名域名-》ipdns域名劫持:将域名对应的ip改掉5.2.1修改主机…

networkx学习(四)无标度网络

networkx学习(四)无标度网络 无标度网络: 对于随机网络和规则网络,度分布区间非常狭窄,大多数节点都集中在节点度均值< k >的附近,说明节点具有同质性,因此< k >可以被看作是节点度的一个特征标度。而在节点度服从幂律分布的网络中,大多数节点的度都很小,…

从零创建vue示例

从零创建vue搭建node环境创建vue项目vue项目目录介绍搭建node环境 1.下载node(node官网) 安装node一路点next即可 2.windowR—cmd ----测试一下npm -v 以及node -v 显示版本号 3.执行以下命令&#xff08;-g表示全局安装&#xff09; npm install -g vue npm install -g vue…

优化命令 nload详解

优化命令 nload详解 引言 nload用于实时监控linux下网络流量信息&#xff0c;是命令行工具&#xff0c;用来监控网络的吞吐量。它使用两个图表数据来对进出站流量进行可视化。 一、nload安装 nload工具并不是centos自带的&#xff0c;需要我们手动安装下载 直接yum安装查不到…

Kettle 快捷引入数据库

在编写kettle任务时往往需要连接数据库&#xff0c;kettle一共提供了四种数据库配置方式&#xff0c;JDBC、ODBC、OCI、JNDI&#xff0c;我最初直接使用的最为熟悉的JDBC&#xff0c;但是多写几个转换程序就会发现&#xff0c;每新建一个转换任务文件时都需要重新配置数据信息&…

DDOS渗透与攻防(四)之应用层DoS攻击

系列文章 DDOS渗透与攻防(一)之拒绝服务攻击概念介绍 DDOS渗透与攻防(二)之SYN-Flood攻击 DDOS渗透与攻防(三)之socktress攻击 应用层DoS攻击 攻击协议原理介绍说明-应用层DoS 应用服务漏洞 服务代码存在漏洞&#xff0c;遇异常提交数据时程序崩溃应用处理大量并发请求能力…

Git(见Docx)

Git的概念【1】Git技术&#xff1a;公司必备&#xff0c;一定要会 【2】Git概念&#xff1a; Git是一个免费的、开源的分布式版本控制系统&#xff0c;可以快速高效地处理从小型到大型的项目。【3】什么是版本控制&#xff1f; 版本控制是一种记录一个或若干文件内容变化&#…

Redis 发布订阅模式的深度解析与实现消息队列

1 发布订阅模式(Pub/Sub)的概述我们可以利用Redis的List数据结构实现一个简单的消息队列&#xff0c;通过lpush命令写入消息&#xff0c;通过rpop 命令拉取消息&#xff0c;也可以使用BRPOP实现阻塞式的拉取消息。上面的消息队列有一个缺点&#xff0c;那就是不支持消息多播机制…

百趣代谢组学文献分享:以猪为模型检测哺乳动物之间的代谢物交换

百趣代谢组学文献分享&#xff0c;您对哺乳动物不同器官之间的代谢物交换情况了解吗&#xff1f; 本期百趣代谢组学小趣给大家分享的是美国普林斯顿大学Joshua D. Rabinowitz团队发表在Cell Metabolism上的研究成果。该团队以猪为模型&#xff0c;利用高通量靶标技术定量测定了…