【node】npm包本地開發與調試

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;通…