webpack4 sideEffects实战轻松搞懂

2023-11-12

sideEffects 译作副作用

函数副作用是指函数在正常工作任务之外对外部环境所施加的影响。具体地说,函数副作用是指函数被调用,完成了函数既定的计算任务,但同时因为访问了外部数据,尤其是因为对外部数据进行了写操作,从而一定程度地改变了系统环境。函数的副作用也有可能是发生在函数运行期间,由于对外部数据的改变,导致了同步运行的外部函数受到影响。 引入来源百度百科

测试代码准备

手动创建一个包delete放到了node_modules(2个文件)

  • node_modules/delete/package.json
{
  "name": "delete",
  "sideEffects":false,
  "main": "index.js",
}
复制代码
  • node_modules/delete/index.js
export var a = (function () {
	console.log(11111111)
	return b;
})()

export function b() {
	return '22222222222';
}

export function c() {
	return '333333333333';
}
复制代码

引入的入口

  • gpwebpack/src/index.js
# 仅此一行 足矣!
import { a,b,c } from "delete";
复制代码

项目要运行的命令

  "scripts": {
    "dev": " webpack-dev-server --inline --progress --mode development --config  webpack.dev.config.js",
    "build": "webpack  --mode production",
    "build:dev": "webpack  --mode development"
  },
复制代码

准备完毕!

开测

例1 "sideEffects":false ,标识没有副作用

运行npm run build

没有搜到任何的 111 or 2222。证明没有打包进来。

例2 "sideEffects":true ,标识有副作用

运行npm run build

看到多了一个文件。

搜到 111 和 2222,没有333。证明a,b打包进来,c没有打包进来。

因为a是函数自执行,a又引用b,so。。。

例3 "sideEffects":false ,标识没有副影响

运行npm run build:dev

搜到的 111,2222,333。证明当 --mode development时,不开启 tree-shaking,都打包进来。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

webpack4 sideEffects实战轻松搞懂 的相关文章

  • 如何使用 RSpec 检查 JSON 响应?

    我的控制器中有以下代码 format json render json gt flashcard gt flashcard lesson gt lesson success gt true 在我的 RSpec 控制器测试中 我想验证特定场景
  • 如何使用 PhpUnit 测试在 POST 方法中传递 JSON?

    我正在使用 symfony 3 0 和 phpUnit 框架 3 7 18 单元测试文件 abcControllerTest php namespace AbcBundle Tests Controller use Symfony Comp
  • 覆盖 QWebView 中的页面回复

    我试图在 Qt 的 QWebView 中拦截页面 表单请求 并在某些情况下使用替代内容进行响应 QNetworkReply ngcBrowser createRequest Operation operation const QNetwor
  • 在 json 中解析尾随字符

    我正在尝试检查 json 是否有效 并且我遇到了奇怪的行为 当我将一些字符附加到可解析的 json 时 jackson 和 gson 都会解析它 并且它们会忽略尾随字符 我想检查 json 是否严格有效 请帮忙 我尝试了几个标志mapper
  • Ajax JSON 数据和灯箱冲突

    我有一个带有灯箱插件的画廊设置光廊 http sachinchoolur github io lightGallery docs 该画廊与静态 HTML 完美配合 当我动态抓取 API 数据并尝试让灯箱处理这些项目时 问题就出现了 我似乎无
  • 获取 JSON 中的 HTML 以在 React 组件中呈现为 HTML

    试图找出如何让链接实际呈现为链接 现在 在我从 Json 文件中读取这行文本后 React 将超链接渲染为文字文本 而不将其渲染为链接 一些数据 json about John has a blog you can read a href
  • AWS SES模板html部分是多行

    我正在使用 AWS SES 按照文档发送电子邮件https docs aws amazon com ses latest DeveloperGuide send personalized email api html https docs
  • 如何将 Laravel 5.4 与 Angular 4 集成

    我知道如何创造完整的拉拉维尔 5 4自己的项目 我也知道如何使用创建 SPA角4 Problem 我不知道如何将 Laravel 与 Angular 集成 另外 我想使用 Laravel 5 4 作为后端 使用 Angular 4 作为前端
  • aspnetcore 出现角度错误 NodeInitationException:节点调用在 60000 毫秒后超时

    我在用着yo generator aspnetcore spa一旦我运行应用程序 我就遇到了问题 处理请求时发生未处理的异常 NodeIncationException 节点调用在 60000 毫秒后超时 您可以通过设置更改超时持续时间 N
  • 在 MySQL 中使用 COUNT 时如何返回 0 而不是 null

    我使用此查询返回存储在 sTable 中的歌曲列表以及存储在 sTable2 中的总项目数 SQL queries Get data to display sQuery SELECT SQL CALC FOUND ROWS str repl
  • 使用 Jade 评估自定义 javascript 方法 (CircularJSON)

    我想通过 Jade 将一个对象解析为客户端 JavaScript 通常这会起作用 script var object JSON parse JSON stringify object but my object is circular ht
  • php 数组中出现意外的 json 输出结构

    我正在尝试转换动态数据 如何从 PHP 获取此 JSON JSON 122240cb 253c 4046 adcd ae81266709a6 item 0 3 这就是我所做的 但它不起作用 PHP json array 122240cb 2
  • nlohmann/json 框架中的未知断点

    一段时间以来 当我在启用断点的 Xcode 下运行我的应用程序时 我显然在名为 nlohmann basic json 的系统框架中遇到了一个未知断点 我可以毫无问题地继续执行 但这无论如何都很烦人 知道这个断点的原因是什么 或者更好的是
  • Angular 2 - ng 构建与 webpack 构建

    我想了解构建和部署 Angular 2 Web 应用程序的最佳方法是什么 我最终需要将其作为 Web 捆绑资源提供给我的 dropwizard 应用程序 我试图了解是否应该保留 ng build 并使用它来生成我的 dist 文件夹 或者我
  • Vue.js 未捕获类型错误:_vueChartjs.Line.extend 不是函数

    刚刚启动 Vue js 和 webpack 我正在尝试将 vue chartjs 功能添加到我的项目中 我收到以下错误 Uncaught TypeError vueChartjs Line extend is not a function
  • 使用 JaxRS 自定义 JSON 序列化

    在 Web 服务调用中 我想返回具有此 JSON 结构的对象 date 30 06 2014 price val 12 50 curr EUR 我想将此 JSON 代码映射到此 Java 结构 使用乔达时间 http www joda or
  • Webpack - 导出常量

    我第一次尝试从 systemjs 迁移到 webpack 在我的应用程序中 我有这样的东西 import appSettings from AppSettings 其中 AppSettings 只是一个带有 const 的文件 实际上并不是
  • 使用 x509 证书签署 json 文档或字符串

    如何使用 x509 证书签署 json 文档或字符串 public static void fund string filePath C Users VIKAS Desktop Data xml Read the file XmlDocum
  • JavaScript 相对路径

    在第一个 html 文件中 我使用了一个变量类别链接 var categoryLinks Career prospects http localhost Landa DirectManagers 511 HelenaChechik Dim0
  • Cypress 在 Create React App 中返回 .scss 文件的 webpack 编译错误

    我正在尝试将 Cypress 添加到非常基本的 CRA 但遇到了 Cypress 无法理解 scss 文件的问题 当我跑步时npm run cypress运行测试 我收到以下错误 Error Webpack Compilation Erro

随机推荐

  • kibana集成内部账号_nginx和kibana/es集成

    利用elk搞了一个日志平台 随着日志越来越多 使用的人反应kibana上查询比较慢 kibana虽然有日志 但记录的信息不全 无法分析到底是什么样的查询比较慢 因此考虑在kibana和elk之间加一个nginx 主要作用有两个 1 记录ki
  • 树的广度遍历

    在二叉树的遍历当中 有一种遍历方法是不常见的 那就是广度遍历 和其他三种遍历方法不同 二叉树的广度遍历需要额外的数据结构来帮助一下 什么数据结构呢 那就是队列 因为队列具有先进先出的特点 这个特点要求我们在遍历新的一层数据之前 必须对上一次
  • java Integer类型比较

    在比较两个new的Integer对象时 不能直接使用 这里比较的是对象的地址 应该调用 equals 方法 Integer i new Integer 888 Integer j new Integer 888 System out pri
  • uniapp 中使用jssdk正确姿势

    这是基于企业项目实战分享 npm方式使用下方进行安装 npm install jweixin module save 安装在项目中的效果如图 接下自己定义个js 引入我们用npm引入的模块 jwx 代码 let jweixin requir
  • html总结

  • 两个常用的数据标准化方法及Matlab和Python实现

    参考 数据归一化和两种常用的归一化方法 博主对原文进行了润色并添加了Matlab和Python实现 数据标准化处理是数据挖掘的一项基础工作 不同评价指标往往具有不同的量纲和量纲单位 这样的情况会影响到数据分析的结果 为了消除指标 特征 之间
  • 【Linux_】环境变量

    Linux 环境变量 心有所向 日复一日 必有精进 专栏 Linux 作者 沂沐沐 目录 Linux 环境变量 什么是环境变量 常见变量 查看环境变量方法 环境变量相关的命令 通过系统调用获取或设置环境变量 环境变量通常是具有全局属性的 导
  • Javascript设计模式-17-装饰者模式

    Javascript 设计模式 17 装饰者模式 简介 装饰者模式可以动态的给某个对象添加一些额外的职责 而不会影响从这个类中派生出的其他对象 优势 传统的面向对象语言中 给对象添加功能常常使用继承的方式 但是继承的方式并不灵活 还会带来许
  • C语言 操作符详解 上

    C语言中操作符介绍 表达式求值 操作符分类 1 算数操作符 2 移位操作符 lt lt gt gt 3 位操作符 4 赋值操作符 5 单目操作符 sizeof 6 关系操作符 gt lt gt lt 7 逻辑操作符 8 条件操作符 9 逗号
  • Swagger与Knife4j学习笔记

    Swagger 介绍 在前后端分离开发的过程中 前端和后端需要进行 API 对接进行交互 就需要一个 API 规范文档 方便前后端的交互 但 API 文档不能根据代码的变化发生实时动态的改变 这样后端修改了接口 前端不能及时获取最新的接口
  • 百度搜索自动补全(百度搜索常见api)

    一 百度搜索常用api 百度搜索常用api 一 搜索关键字自动补全 一 数据源 https sp0 baidu com 5a1Fazu8AA54nxGko9WTAnF6hhy su wd 关键词 json 1 二 代码 可以使用前端插件 B
  • DDT数据驱动+yaml/csv(自动化测试,接口测试)

    目录 1 ddt读取yaml文件 2 ddt读取csv文件 3 ddt式测试报告怎么填用例描述 背景 对于输入框来言 使用等价类边界值 场景法等进行数据输入 接口相同 输入的内容都非常相似 却有不同的响应结果 如果我们对于每次输入都编写一条
  • Linux中的$0、$1、$@、$?、$*等特殊变量介绍

    特殊变量 是传给脚本的参数个数 0 是脚本本身的名字 1 是传递给该shell脚本的第一个参数 2 是传递给该shell脚本的第二个参数 是传给脚本的所有参数的列表 是以一个单字符串显示所有向脚本传递的参数 与位置变量不同 参数可超过9个
  • Invalid prop: type check failed for prop “data“. Expected Array, got Object[已解决]

    Vue warn Invalid prop type check failed for prop data Expected Array got Object 要处理这个bug就必须先明白这个bug到底是什么类型是怎么一回事 那字面意思就是
  • Mirai环境搭建

    20200805 引言 关于Mirai的环境搭建 我记得能搜到很多结果 不过我当时并没有想要启动mirai的所有功能 毕竟其实他的代码也有缺陷 现在想扫出来结果也有点难了 后面可能还是需要这些功能来辅助扫描结果 其他功能还是要开启 这里先记
  • C语言基础_文件操作-1

    目录 写在前面 学习目标 学习总结 正文 1 文件打开 关闭 2 getc putc 3 fprintf fscanf gets不安全 用fgets 4 fgets gputs 5 文件光标操作 a fseek ftell long范围内操
  • C++语言分号的使用

    C 语言中 表达式的一部分能够组成独立的语句 所以必须加分号分割 c a b 成立 c a b 也成立 if 1 1 do something 成立 if 1 1 do something 也成立 class foo bar 成立 含义为独
  • c++能不能给类的成员变量在声明的时候初始化?

    能 可能早先的版本不能 但是c 11标准下能 有人说在声明的时候初始化相当于在构造函数中初始化 其实不是的 成员变量初始化的顺序为 先进行声明时初始化 然后进行初始化列表初始化 最后进行构造函数初始化 如下代码 另外初始化列表中初始化的顺序
  • STM32启动BOOT0 BOOT1设置方法

    转载自 https www jianshu com p 38c4a90bac19 不同的下载方式对应STM32启动方式也不同 如下图是STM32三种启动方式 第一种启动方式是最常用的用户FLASH启动 正常工作就在这种模式下 STM32的F
  • webpack4 sideEffects实战轻松搞懂

    sideEffects 译作副作用 函数副作用是指函数在正常工作任务之外对外部环境所施加的影响 具体地说 函数副作用是指函数被调用 完成了函数既定的计算任务 但同时因为访问了外部数据 尤其是因为对外部数据进行了写操作 从而一定程度地改变了系