npm link

进入本地的 babel-plugin-function-try-catch 这个 npm 包的根目录执行:

npm link

上面的命令可以将当前的这个包安装在全局(mac 中的路径是 /usr/local/bin),也就是 npm i -g 安装包的目录。

执行后结果如图:
img
这样在本地的 global 下就会存在一个这样的 npm 包。

由于这是通过软链接的方式实现的,当我们编辑了本地的 babel-plugin-function-try-catch 模块中的代码,可以直接在安装它的工程中马上看到更新后的效果。

项目中安装本地 npm 包

接下来,我们(随便)找一个业务工程去安装这个 npm 包,本文默认使用这个工程可以点击去下载。
在工程根目录执行:

npm link babel-plugin-function-try-catch

上面这一步就是让当前工程去模拟 npm install 命令,包来源于本地 npm link 过的文件。
img
执行后,业务工程的 node_modules 中就会有这个包。
img

眼尖的小伙伴会发现,这个 npm 包不同于其它包,它带有一个转折箭头符号。如下图所示:

img
也就是说这是一个软链接,执行 npm link xxx 后它会在系统中做一个快捷方式映射。所以这样方便我们不断调试本地正在开发的这个 npm 包。

本地项目工程配置这个 loader

打开当前项目的 webpack 配置文件:
webpack.config.js

rules: [{test: /\.js$/,exclude: /node_modules/,use: [
+       "babel-plugin-function-try-catch","babel-loader"]},
]

执行 npm start 启动当前前端工程。可以看到原来的代码

var fn = function(){console.log(11);
}
fn();

在浏览器中自动会加上 try/catch,错误发生时可以自动捕获和上报。

img

至此,完成了本地 npm 包和本地业务工程的关联!

本地调试 npm 代码

此时我要修改 catch 中的代码,将其改为 console.log(error),这个时候你只需要修改本地 npm 工程中的代码即可:

// src/index.js- var catchStatement = template.statement(`ErrorCapture(error)`)();
+ var catchStatement = template.statement(`console.log(error)`)();

然后执行:

npm run build

img

再切到业务工程重新启动项目 npm start 即可生效。

img

当本地 npm 包调试完成后,在其根目录执行:

npm unlink babel-plugin-function-try-catch

即可解除 link。

如果要发布到 npm 公网,执行 npm publish 即可。

参考: https://segmentfault.com/a/1190000037638502

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

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

相关文章

突破量子仿真瓶颈:微算法科技MLGO量子算法的算术化与核操作迭代模型

近年来,量子计算机的迅速发展和潜在的强大计算能力吸引了全球科研机构和企业的广泛关注。量子计算机利用量子力学的特性来处理复杂的计算任务,具有在某些方面远超经典计算机的潜力。然而,真正实用的量子计算机尚未大规模普及,因此…

python中读取 Excel 表格数据

在pandas中读取 Excel 表格后,有多种方式可以按列、按行提取数据,下面我将详细介绍常见的方法。 0.声明 在本文中我使用的excel表内容如下:1. 读取 Excel 文件 首先,我们需要使用 pandas 的 read_excel 函数读取 Excel 文件&#…

算法训练营day28 贪心算法②122.买卖股票的最佳时机II、55. 跳跃游戏、 45.跳跃游戏II 、1005.K次取反后最大化的数组和

贪心算法第二篇博客!感觉这篇博客中的算法都很巧妙,需要动动脑筋 122.买卖股票的最佳时机II (这道题可以遍历数组,如果不能遍历的话,就不能做了,需要注意的是: 只有一只股票!当前只…

NumPy核心操作全攻略

NumPy(Numerical Python)是 Python 生态中用于科学计算的核心库,提供高性能的多维数组对象(ndarray)及相关的数学运算工具。其核心功能围绕数组操作、线性代数、随机数生成等,是数据科学、机器学习等领域的…

Redis 主从同步对象模型

淘汰策略 对最外层的key进行淘汰 expire(秒)/pexpire(毫秒) ttlmaxmemory:最大内存的一半(持久化fork()子进程) 数据迁移需要额外的空间 maxmemory-policy 提供淘汰机制 默认不会淘汰 lru 最近最少使用 lfu最近最少频次 voltaile 对由expire的进行淘汰持久化: fork:写时复制原理…

C++ 使用 constexpr 、查表法、分治法加速位镜像翻转

代码////// brief 左右翻转位。////// note 翻转后&#xff0c;最低位位将变为最高位&#xff0c;最高位将变为最低位。//////template <typename T>requires(std::is_same_v<T, uint8_t>)constexpr T Reverse(T value){int32_t bit_count sizeof(T) * 8;for (int…

知识库搭建之Meilisearch‘s 搜索引擎 测评-东方仙盟测评师

windows 启动后 启动成功后关键信息 Config file path: "none" Database path: "./data.ms" Server listening on: "http://localhost:7700" Environment: "development" Commit SHA: &quo…

【笔记】Anaconda 重装后虚拟环境写入路径异常的完整排查与解决过程

Anaconda 安装[仅为当前用户安装/为所有用户安装]选项对环境变量设置的影响_anaconda没有添加环境变量-CSDN博客 Anaconda 路径治理指南&#xff1a;路径精简、权限优化与环境隔离-CSDN博客 Windows系统下手动升级Anaconda的详细指南_anaconda升级-CSDN博客 Conda 命令大全&…

QuecPython-正则表达式

该模块通过正则表达式匹配数据。目前支持的操作符较少&#xff0c;部分操作符暂不支持。示例&#xff1a;import ureres $GNRMC,133648.00,A,3149.2969,N,11706.9027,E,0.055,,311020,,,A,V*18 $GNGGA,133648.00,3149.2969,N,11706.9027,E,1,24,1.03,88.9,M,,M,,*6C $GNGLL,3…

QT窗口(3)-状态栏

QT窗口&#xff08;3&#xff09;-状态栏 状态栏 代码如下&#xff1a;//存在就获取&#xff0c;不存在就创建QStatusBar*statusBarthis->statusBar();this->setStatusBar(statusBar);//显示一个临时消息statusBar->showMessage("这是一个状态消息");运行结…

更具个性的域名:解锁互联网多元价值的钥匙

关于Dynadot Dynadot是通过ICANN认证的域名注册商&#xff0c;自2002年成立以来&#xff0c;服务于全球108个国家和地区的客户&#xff0c;为数以万计的客户提供简洁&#xff0c;优惠&#xff0c;安全的域名注册以及管理服务。 Dynadot平台操作教程索引&#xff08;包括域名邮…

深度学习模块实践手册(第十一期)

46、缩放点积注意力模块论文《Attention Is All You Need》1、作用&#xff1a; 缩放点积注意力&#xff08;Scaled Dot-Product Attention&#xff09;是 Transformer 模型的核心组件&#xff0c;旨在解决序列建模中长距离依赖关系捕捉的问题。传统的循环神经网络&#xff08;…

C++高级技术详解

C高级技术详解 目录 模板 (Templates)右值和移动语义 (Rvalue and Move Semantics)定位 new (Placement new)强类型 (Strong Types)智能指针 (Smart Pointers)容器和算法 (Containers and Algorithms)Lambda表达式常量表达式 (constexpr)多线程和并发 (Multithreading and Co…

跨境卖家紧急自查,Endryko Karmadi四季版画版权维权

25年7月2日&#xff0c;Keith律所代理印尼艺术家Endryko Karmadi发起全新版权维权行动。案件基本情况&#xff1a;起诉时间&#xff1a;2025-7-2案件号&#xff1a;25-cv-07436品牌&#xff1a;Endryko Karmadi Work原告&#xff1a;Endryko Karmadi 原告律所&#xff1a;keith…

M3088NL是一款网络滤波器/变压器支持100M和1000M网络环境,适用于高速网络传输场景M3088

M3088NL是一款网络滤波器/变压器&#xff0c;主要特点如下&#xff1a;兼容性 支持100M和1000M网络环境&#xff0c;适用于高速网络传输场景。 ‌封装形式 采用SOP/SOIC封装&#xff0c;便于电路集成。 ‌应用场景 常用于网络电话、开关电源等需要稳定电流的设备&#xff0c;符…

PyQt动态布局管理器:QSplitter详细指南

PyQt动态布局管理器&#xff1a;QSplitter详细指南 QSplitter简介 在PyQt中&#xff0c;除了常见的QVBoxLayout、QHBoxLayout等静态布局管理器外&#xff0c;QSplitter提供了一种动态布局解决方案。QSplitter允许用户通过拖拽分隔条来实时调整控件大小&#xff0c;为应用程序提…

Java设计模式之行为型模式(备忘录模式)实现方式详解

最近看到一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站 一、基础实现结构 角色定义与代码骨架 备忘录模式包含三个核心角色&#xff0c;其协作关系如下&#xff1a; Originator&#xff08;发起人&…

k8s:离线部署tomcatV11.0.9,报Cannot find /opt/bitnami/tomcat/bin/setclasspath.sh

本文记录了在离线环境下部署Tomcat容器时遇到的权限问题及解决方案。在Docker环境中运行Tomcat时出现&quot;找不到setclasspath.sh&quot;错误&#xff0c;通过添加--security-opt seccompunconfined参数解决。在Kubernetes环境中部署时出现相同问题&#xff0c;通过设置…

Linux操作系统之线程(五):线程封装

目录 前言 一、线程ID及进程地址空间布局 二、线程栈与线程局部存储 三、线程封装 总结&#xff1a; 前言 我们在上篇文章着重给大家说了一下线程的控制的有关知识。 但是如果我们要使用线程&#xff0c;就得那这pthread_create接口直接用吗&#xff1f;这样岂不是太过麻…

【物理与机器学习】从非平衡热力学到扩散模型

[toc] 0.引子:从非平衡热力学开始 1.架构简介 2.反向过程的具体推导与 DDPM 改进摘要&#xff1a;扩散模型将非平衡热力学的“噪声注入—去噪逆转”理念注入生成建模中。DDPM&#xff08;Denoising Diffusion Probabilistic Models&#xff09;在 SD2015 的基础上&#xff0c;通…