npm link实操详细指南

2023-11-04

准备

首先我们需要有两个npm包,一个作为依赖包,一个作为应用包。
依赖包:deps
应用包:app

然后仔仔细细的看一下依赖包的包名和输出路径,如main
好几次用法不对都是因为main字段配置的路径有问题

如我的依赖包package.json

{
  "name": "deps",
  "version": "1.0.0",
  "description": "",
  "main": "dist/index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build": "tsc",
    "dev": "tsc -w"
  },
  "devDependencies": {
    "@types/node": "^20.3.3"
  }
}

那么如果使用webpack、tsc等构建工具,一定要确保构建工具的输出路径对应着package.json中的main路径,这样可以减少80%的调试时间

以全局为中转的npm link

对依赖包的操作

在依赖包的根路径,如~/Desktop/deps,调用npm link,此时会在全局node_modules中为该包创建一个软链接,可以通过npm list -g查看当前的全局npm包列表

如果想要取消链接,需要在同一路径,即依赖包根路径~/Desktop/deps,执行npm unlink -g,切记要有-g参数,否则无效

对应用包的操作

在应用包的根路径,如~/Desktop/app,调用npm link deps,此时会从全局node_modules中找到该包,并在当前路径的node_modules为该包创建一个软链接,可以通过npm list查看当前目录的npm包列表

不需要在package.json中填写相应的依赖项

如果想要取消链接,需要在同一路径,即应用包根路径~/Desktop/app,执行npm unlink deps

vscode中使用快捷建议

如果你使用的是vscode,且deps包导出了若干个变量,如export {depsFun1, depsFun2, depsFun3},那你可能希望在应用包中输入depsFun1时,vscode可以自动在文件最上方添加import { depsFun1 } from 'deps',这不需要额外的操作,只要你的项目中有一个从deps包的引用,从第二个开始vscode即可快捷建议出deps包中的所有导出变量

直连的npm link

在应用包根路径~/Desktop/app直接使用npm link ~/Desktop/deps
效果与上述相同,且更加方便

如果想要取消链接,需要在同一路径,即应用包根路径~/Desktop/app,执行npm unlink depsnpm unlink ~/Desktop/deps

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

npm link实操详细指南 的相关文章

随机推荐

  • lua 定时器以及应用

    function update timer fun for k v in pairs update timer m process time fun do v k update timer m porcess run time k end
  • qt操作excel表

    https blog csdn net cannon qi article details 79972258
  • day-37 代码随想录算法训练营(19)贪心part06

    738 单调递增的数字 思路 在给的数字中找到第一个开始递减的两个数字 将前一个数字减1 后面的数字全部变为最大值9 968 监控二叉树 思路 分三种状态 0无覆盖 1有监控 2有覆盖 分四种情况 1 两边都有覆盖 返回0 2 两边有一边无
  • 在关系数据库中。存放在数据库中的逻辑结构以什么为主 (4选一)

    C 哈希表
  • 笔试题2:如何用八进制和十六进制来表示整型数据

    八进制的含义在于每位数字的进位大小为8 也就是0 8的9个数字 十六进制的进位大小为16 除了0 9的10个数字 还包括a b c d e f来表示10 11 12 13 14 15 答案 Java的八进制采用0开头 十六进制采用0x开头
  • iOS宏定义的黑魔法 - 宏菜鸟起飞手册

    转自 OneV s Den的博客 宏定义在C系开发中可以说占有举足轻重的作用 底层框架自不必说 为了编译优化和方便 以及跨平台能力 宏被大量使用 可以说底层开发离开define将寸步难行 而在更高层级进行开发时 我们会将更多的重心放在业务逻
  • 计算机虚拟化+网络

    计算机虚拟化 网络 cookie 什么是 Cookie cookie的生命周期 cookie Cookie 用于存储 web 页面的用户信息 什么是 Cookie Cookie 是一些数据 存储于你电脑上的文本文件中 当 web 服务器向浏
  • C++像素游戏

    我的作品 鼠标板 黑科技之橡素 代码 include
  • Verilog语言实现FPGA上的计数器

    Verilog语言实现FPGA上的计数器 计数器是数字电路中经常使用的基本元素之一 它用于生成指定脉冲数量或者指定计数范围内的计数信号 在现代数字电路设计中 FPGA Field Programmable Gate Array 作为一种可编
  • QT+Opencv 时报错Failed to load module “canberra-gtk-module“

    解决方案 sudo apt get install libcanberra gtk module
  • 二维数组作为参数,传入函数(最好用的)

    二维数组作为参数 传入函数 最好用的 很多时候我都是直接通过传入一个 固定的数字来传递一个二维数组 比如这样子定义函数 int fun int a 3 int n 调用函数是 fun a n 这样子调用的二维数组只能是固定已经知道的 不够灵
  • 使用Kettle实现数据排序

    一 Kettle的安装 1 下载Kettle的安装包文件 在Windows系统中打开浏览器 访问Kettle官网 https sourceforge net projects pentaho 下载Kettle安装文件pdi ce 9 1 0
  • 最大公约数、最小公倍数、辗转相除法的求解和证明

    两个正整数的最大公约数 Greatest Common Divisor GCD 在计算机中通常使用辗转相除法计算 最小公倍数 Least Common Multiple LCM 可以使用GCD来计算 下面首先介绍GCD和LCM 然后介绍辗转
  • node.js解析xml(xmlreader)

    博客搬家 由于各种原因 我现在的博客将首发于blog mojijs com 可以百度搜索 姜哥的墨迹技术博客 或者 点击这里 本文地址 http blog mojijs com post 19 html xml作为一种重要的数据交换格式 我
  • 图书库毕业设计网页增删改查源码

    介绍 使用HTML VUE PHP MYSQL写的一个简单图书库 实现了简单的数据库增删改查 以及数据列表的展示 源码里包含了前端文件 和api文件 还有数据库表文件 搭建好环境 导入数据库 配置好数据库链接即可直接运行 学习资料地址 ht
  • javaswing基本使用

    package exam test1 import javax swing import java awt import java awt event ActionEvent import java awt event ActionList
  • 三态门——概念,作用,原理

    介绍一下三态门的概念 作用 原理 目录 三态门的概念 三态门的作用 实现总线结构 实现双向数据传输 三态门的原理 三态门的概念 三态门是指逻辑门的输出有三种状态 高电平状态 低电平状态 高阻状态 其中 高阻状态相当于隔离状态 因为高阻状态电
  • linux x64 asm 参数传递,x64 ASM 常用汇编指令

    语法习惯 立即数 开头 寄存器 开头 取地址里面的值 偏移量 寄存器 除了 lea 取地址指令 外 lea就是取地址 load effecive address 整形操作通用后缀 后缀 b w l q 1 2 4 8 byte word l
  • spring源码之@Autowired属性注入

    注入现象 当我们在属性上面加上 Autowired的时候 spring就要根据Type来注入实例了 那么到底会找哪个实例的如果有多个怎么办 今天就来实验一下 多接口注入 当注入的属性接口下有多个实现 这个时候运行的话是 public cla
  • npm link实操详细指南

    准备 首先我们需要有两个npm包 一个作为依赖包 一个作为应用包 依赖包 deps 应用包 app 然后仔仔细细的看一下依赖包的包名和输出路径 如main 好几次用法不对都是因为main字段配置的路径有问题 如我的依赖包package js