首页 > 其他分享 >"sideEffects": [ "dist/*", "esm/**/style/*", "lib/**/

"sideEffects": [ "dist/*", "esm/**/style/*", "lib/**/

时间:2024-04-01 22:44:21浏览次数:21  
标签:style dist lib sideEffects less 模块 esm

这段配置出现在一个软件包的 package.json 文件中,具体是 "sideEffects" 字段。这个字段用于告知打包工具(如 Webpack、Rollup 等)哪些模块或文件可能存在副作用(side effects),以便在进行 Tree Shaking(摇树优化)时做出正确决策。

Tree Shaking 是一种优化技术,旨在在打包过程中去除那些在最终代码中未被引用的模块,以减小打包后的文件大小。它依赖于 ES6 模块的静态导入导出特性,能够分析模块间的依赖关系,丢弃未使用的代码。

然而,某些模块可能包含副作用,即除了导出可供外部使用的值之外,还在模块内部执行了其他操作,如全局变量赋值、注册事件监听器、修改外部状态等。这些副作用可能在模块被导入时触发,即使导入者并未直接使用模块导出的任何值。为了防止误删此类模块,需要在 sideEffects 字段中明确指出。

回到您提供的配置:

"sideEffects": [
  "dist/*",
  "esm/**/style/*",
  "lib/**/style/*",
  "*.less"
]

这个配置说明了以下几点:

  1. dist/*:表示 dist 目录下所有文件(通配符 * 表示任意文件名)都可能有副作用。
    这意味着打包工具在进行 Tree Shaking 时不应移除这些文件中的任何代码,即使看起来未被直接引用。

  2. esm/**/style/*lib/**/style/*:这两个条目指定了 esmlib 目录下各级子目录中 style 目录下的所有文件(同样使用通配符 *)可能存在副作用。
    这可能是因为这些文件包含了 CSS、CSS Modules 或其他样式相关代码,它们可能在导入时影响全局样式或通过 CSS-in-JS 方案动态注入样式。

  3. *.less:表示所有以 .less 为扩展名的文件都可能存在副作用。Less 是一种 CSS 预处理器,编译后的 CSS 代码可能包含影响全局样式的规则,因此不应被 Tree Shaking 删除。

总结起来,这段 "sideEffects" 配置告诉打包工具:在进行 Tree Shaking 时,对于 dist 目录下的所有文件,以及 esmlib 目录下 style 目录内的所有文件,以及所有 .less 文件,
即使它们看似未被直接使用,也不应进行删除,因为它们可能包含对全局状态或样式有影响的副作用。这样可以确保在优化代码体积的同时,避免意外移除可能引发问题的代码。

标签:style,dist,lib,sideEffects,less,模块,esm
From: https://www.cnblogs.com/longmo666/p/18109554

相关文章

  • D11-StyleControls安装到使用
    1.首先网上下载D11--StyleControls控件2.得到这个BPL文件后打开D11-选择Component-installpackages...--Add找到你下载的文件目录--直到安装完成--ok3.安装完成后目录下就会出现下图文件,当然这个时候还不能直接使用,要不然编译会出错。4.找到StyleControls_D11Alexandria.dpk(......
  • liblzma/xz被植入后门,过程堪比谍战片!
    事件概述xz是一种几乎存在于所有Linux发行版中的通用数据压缩格式。从5.6.0版本开始,在xz的上游tarball包中被发现了恶意代码,通过一系列复杂的混淆手段,liblzma的构建过程从伪装成测试文件的源代码中提取出预构建的目标文件,然后用它来修改liblzma代码中的特定函数。这导致生成了一......
  • 【QT+QGIS跨平台编译】054:【exiv2lib+Qt跨平台编译】(一套代码、一套框架,跨平台编译)
    点击查看专栏目录文章目录一、exiv2lib介绍二、文件下载三、文件分析四、pro文件五、编译实践一、exiv2lib介绍  exiv2lib是一个用于处理图像元数据的开源C++库。它可用于读取、编辑和写入图像文件中的Exif元数据(ExchangeableImageFileFormat,可交......
  • 微服务集成Spring Cloud Alibaba Seata(一)Seata服务搭建
    1、Seata介绍Seata是阿里开源的一款分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。数据库事务我们都知道,事务都是遵循ACID原则。而通过使用Seata可以实现在两个服务模块通过RPC调用时触发事务,如果有异常会实现业务数据回滚,保证数据的一致性。官网地址:https://......
  • Matplotlib代码实操学习
    一.前情提要1.本文是代码结合知识点,注释即为知识点2.主要详细讲解折线图、散点图和柱状图3.若想深入学习,建议阅读【python教程】数据分析——numpy、pandas、matplotlib_哔哩哔哩_bilibili二.学习①折线图#Ⅰ引入frommatplotlibimportpyplotaspltimportrandomi......
  • 基于energy score的out-of-distribution数据检测,LeCun都说好 | NerulPS 2020
     论文提出用于out-of-distributions输入检测的energy-based方案,通过非概率的energyscore区分in-distribution数据和out-of-distribution数据。不同于softmax置信度,energyscore能够对齐输入数据的密度,提升OOD检测的准确率,对算法的实际应用有很大的意义来源:晓飞的算法工程笔记......
  • MySQL数据库报错:The server quit without updating PID file (/var/lib/mysql/your-h
    在MySQL安装或初次配置过程中,遭遇报错是很常见的一件事,它可能会使你的安装进程暂时停滞。本文将深入探讨一个具体的安装错误,涵盖错误信息、可能的原因,以及详细的解决方案,旨在帮助你高效地解决这一挑战。错误描述安装MySQL过程中,你可能会碰到以下错误信息:Theserverquit......
  • tslib 这个包做啥用的
    tslib是一个专门用于TypeScript项目的辅助工具库,它的主要目的是帮助TypeScript编译后的JavaScript代码变得更精简和高效。当使用TypeScript编写代码并将其编译为JavaScript时,编译器会为一些TypeScript特性生成额外的辅助代码,如类型断言、装饰器、枚举、泛型等。这......
  • 数据剑舞,图表如潮!Matplotlib傲视数据可视化江湖
    在代码的世界中,隐藏着一座神秘而神奇的画图殿堂,它就是Matplotlib。这座殿堂矗立在数据的海洋中,每一行代码都是一笔神奇的咒语,让数据在图像之间舞动,展现出无限可能。Matplotlib的大门上镶嵌着闪烁的彩虹宝石,每当有开发者走近,便散发出五彩斑斓的光芒,仿佛在诉说着这里的神秘。而在宫......
  • sql 注入的类型之 post 基于错误的注入(sqllib靶场less-11-12)(通过burpusite分析)
      post注入和get注入一样,都是基于数据库没有对语句进行足够多的过滤,导致用户可以直接在url上执行sql语句。这两基本上没区别,但是基于post的注入在真实情况下会比get的多得多,最典型的post注入就是万能密码万能密码万能密码便是post注入的一种(也是sql注入),其原理也是因为后端......