前言

在本地开发npm模块的时候,我们可以使用npm link命令,将npm 模块链接到对应的运行项目中去,方便地对模块进行调试和测试

用法

包链接是一个两步过程:

1.为依赖项创建全局软链npm link。一个符号链接,简称软链,是一个快捷方式,指向系统上的其它目录或文件

2.告诉应用程序使用全局软链npm link some-dep

cd ~/projects/some-dep
npm link # 步骤 1.
cd ~/projects/my-app
npm link some-dep # 步骤 2.

我们可以像往常一样在some-dep项目上进行开发. 然后my-app依赖some-dep也是最新的代码。软链是指向本地的,并不会提交到git,这非常有利于我们的调试

调试

如果使用VSCode并想在some-dep中设置断点,你需要在调试器中为my-app启用软链。这样做是通过设置

“runtimeArgs”:[ “-- preserve -symlinks”
]

在launch.json。

在代码中的调试配置中启用符号链接

恢复

当我们不想再使用本地版本时some-dep,请删除软链。但请注意,npm unlink是npm uninstall的别名

cd ~/projects/my-app
npm uninstall --no-save some-dep && npm install

也清理全局链接,但它的存在不会影响到my-app.

cd ~/projects/some-dep
npm uninstall # 删除全软链链接

总结

掌握npm link的两步流程是对任何Node.js开发者的工具集的一个有益补充。这个过程包括在依赖关系中运行npm link,以及在应用中运行npm link some-dep。(另外多提一点现代包管理工具pnpm也是利用软链来管理它的依赖视图)

一文讲懂npm link相关推荐

  1. 什么是请求参数、表单参数、url参数、header参数、Cookie参数?一文讲懂

    最近在工作中对 http 的请求参数解析有了进一步的认识,写个小短文记录一下. 回顾下自己的情况,大概就是:有点点网络及编程基础,只需要加深一点点对 HTTP 协议的理解就能弄明白了. 先分享一个小故 ...

  2. 一文讲懂什么是三层交换机、网关、DNS、子网掩码、MAC地址

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 很多朋友多次问到什么是网关.dns.子网掩码,三层交换机,它们定位的用途: ...

  3. 一文讲懂什么是 vlan、三层交换机、网关、DNS、子网掩码、MAC地址

    来自:有为网络服务 很多朋友多次问到什么是网关.dns.子网掩码,三层交换机,它们定位的用途:确实,因为网络技术在弱电中确实应用非常广泛,我们平时在vip技术群中也是不断的讨论到网关.vlan.三层交 ...

  4. 一文讲懂召回中的 NCE NEG sampled softmax loss

    深度学习中与分类相关的问题都会涉及到softmax的计算.当目标类别较少时,直接用标准的softmax公式进行计算没问题,当目标类别特别多时,则需采用估算近似的方法简化softmax中归一化的计算. ...

  5. 一文看懂npm、yarn、pnpm之间的区别

    原文:Understanding differences between npm, yarn and pnpm 作者:Alex Kras 翻译:雁惊寒 本文作者对比了当前主流的包管理工具npm.yar ...

  6. 一文讲懂图像处理中的低通、高通、带阻和带通滤波器

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 空间域和频域滤波器通常分为四种类型的滤波器--低通.高通.带阻和带 ...

  7. 一文讲懂SQL分组子句GROUP BY

    大家好,我是宁一. 今天讲解SQL教程第15课:GROUP BY子句. GROUP BY子句是用来给结果集分组的,通常与我们上节课讲的聚合函数结合使用. 基本语法: SELECT <字段名> ...

  8. 一文讲懂数据库隔离级别

    文 | 豆豆 来源:Python 技术「ID: pythonall」 相信做后端开发的童鞋肯定没少和数据库打交道,提起数据库,又不能不说数据库事务隔离级别,毕竟这是保证数据可靠一致的重要基石.网上介绍 ...

  9. 一文讲懂什么是函数柯里化,柯里化的目的及其代码实现

    柯里化(Currying) 柯里化(Currying)[1]是一种关于函数的高阶技术.它不仅被用于 JavaScript,还被用于其他编程语言. 柯里化是一种函数的转换,它是指将一个函数从可调用的 f ...

最新文章

  1. C++知识点34——动态内存与智能指针
  2. Sublime Text 新建文件的模版插件: SublimeTmpl
  3. 为什么redis是单线程的以及为什么这么快?
  4. Netty实战 IM即时通讯系统(八)服务端和客户端通信协议编解码
  5. LeetCode 100. 相同的树(二叉树遍历)
  6. Unity3d--跨平台(一)
  7. JSP的9个内置对象-application
  8. int indexs=(int)(_v+0.5);
  9. Nacos集群(二)阿里自研弱一致性Distro协议核心实现
  10. 超星尔雅不让下载?课件,拿来吧你!
  11. hpsocket java代码_java版本调用HP-Socket服务端代码
  12. Antd DatePicker之旬查询(本月上旬、本月中旬、本月下旬)
  13. 自学Java day17 jvav网络编程 从jvav到架构师
  14. HTML 表格与表单 个人简历
  15. 简单易懂的关键词挖掘方法
  16. idea 模块jdk依赖总是自动变为jdk1.5
  17. 消防宣传科普|消防安全知识网上答题挑战赛活动方案
  18. 苹果桌面主题_看腻了手机自带的桌面主题,试试这个
  19. 将数据集Voc .xml转为Matlab 的GroundTruth
  20. Jeewx-Boot 1.1 版本发布,基于SpringBoot的开源微信管家系统

热门文章

  1. 基于百度图像识别api的游戏(coc)辅助工具分析
  2. 制作动态网站比较好用的软件工具
  3. Python——turtle库之画笔形状
  4. BroadCast Channel
  5. 键盘的复制粘贴快捷键总是需要重复多次才起作用
  6. Vue2知识点 - RT
  7. 缩略图方式下, 资源管理器,不能显示文件名
  8. ros ubuntu 卸载_ROS安装与卸载
  9. MindMapper16中文汉化版下载
  10. java 模板函数_重温Java中的模板方法设计模式