首页 > 其他分享 >npm link实操详细指南

npm link实操详细指南

时间:2024-04-15 15:33:05浏览次数:21  
标签:npm node npmModule 链接 link 实操 目录

参考资料:

  https://www.cnblogs.com/zhangzl419/p/15210835.html

1、什么时候使用npm link?

    npm link用来在本地项目和本地npm包之间建立连接,可以在本地进行模块测试。

    npm包在开发和迭代更新时,不适合直接发布到线上或者直接发布测试版本进行调试,会导致过程繁琐且版本号过多。

    此时我们就可以使用npm link命令将包放在node安装目录下的node_modules文件中,这样的话我们就可以直接进行本地调试、开发,非常方便。


 

2、工作原理

    npm link直接把包模拟成安装后的状态,就像我们平时install过一样,直接使用。

    需要注意的时候:

      npm link在目录中生成的并不是真实的文件,而是一个快捷方式,所以在我们修改包的代码逻辑时,都会实时更新(使用正在开发包的地方可以直接更新到最新逻辑,方便开发)

      该快捷方式指向当前执行npm link的目录

      如果开发的是node包,则执行的命令名和真实执行的文件入口,会根据项目package.json里的bin的配置来获取


3、npm link 使用

  3.1: 项目和npm包在相同目录下(相同的文件下)

    此时可以使用相对路径,只需要link一次就好了

    目录例如:

      - module

        - useNpmModule

        - npmModule

cd /module     // 进入开发的项目
npm link ../npmModule       // 软连接到使用npm包的目录

    npm link会在module项目中的node_modules目录下创建一个npmModule的软链接(类似windows的快捷方式),链接着module下的npmModule。

    当npmModule包开发调试时(useNpmModule中使用),可以在useNpmModule得到实时更新的npmModule

  3.2:项目和npm包不在同一目录(不同的文件中)

    useNpmModule:使用npm包的项目文件名

    npmModule:   npm包文件名

    第一步:先进入npmModule文件,然后执行npm link,对提示一个挂载的npm包名(也可在npm包中package.json文件的name属性,找到npm的名称)

1、 cd /npmModule
2、 npm link

    第二步:进入useNpmModule文件,然后执行npm link npm包名(通过包名建立连接)

1、cd useNpmModule
2、npm link npm包名

    工作原理详情:

      项目和npm包不在同一个目录下,需要先把npm包连接到全局,然后再把全局链接项目

      此时指定的 npm包名,在useNpmModule项目的node_module下创建了一个 npm包 的软链接,它链接到/user/local/lib/node_modules/npm包 (可以理解为链接到node安装目录下的node_modules文件中),然后再由/user/local/lib/node_modules/npm包下的软链接,链接到具体的代码目录下(npm包)

   3.3: 编写node模块

     如果是一个单独的项目,不和其他的项目在同一个目录下

     为了让其他目录下的项目,使用node模块,需要将node模块link到全局

     npm link前,需要在node模块的package.json里,配置bin字段

"bin": {
    "自定义的命令": "需要执行的脚本文件"                
}

    在node模块目录下,执行npm link(全局link 不需要添加任何参数)

1、cd 项目路径
2、npm link

4、卸载npm link 链接

  4.1、解除项目与模块的链接

1、 cd /useNpmModule  // 进入使用npm包的项目文件
2、 tnpm unlink npm包名

  4.2、解除npm包的全局链接

1、 cd /npmModule    // 进入npm包文件
2、 tnpm link npm包名      

标签:npm,node,npmModule,链接,link,实操,目录
From: https://www.cnblogs.com/webljl/p/18136060

相关文章

  • npm ERR! errno CERT_HAS_EXPIRED(淘宝镜像证书过期)
    淘宝镜像证书过期npmERR!codeCERT_HAS_EXPIREDnpmERR!errnoCERT_HAS_EXPIREDnpmERR!requesttohttps://registry.npm.taobao.org/echartsfailed,reason:certificatehasexpired SSL证书已过期导致npm命令失败的问题。通常是因为证书过期或不再受信任而引......
  • vscode使用npm安装依赖报错
    1.报错信息npmERR!codeEPERMnpmERR!syscallopennpmERR!pathC:\Node\node_cache_cacache\index-v5\4b\d5\ac02d8eac51f5c368b18a948d14b7ba882d43e6f4cafddbf9dda740d2afanpmERR!errno-4048npmERR!Error:EPERM:operationnotpermitted,open'C:......
  • deeplink
    deeplink1.什么是deeplink?简而言之,就是你在手机浏览器上面点击一个链接,可以跳转到另一个app内部的某一个页面,不是app正常打开时显示的首页内容。在早期的时候各个app之间就像大海(Android,ios)中的孤岛,互相之间没有什么联系,一项技术的出现,必然是为了解决某些痛点,直到deep......
  • 【攻防实操系列+内网渗透篇】--第2章:内网渗透攻击基础①
    以域控为基础架构,通过域控实现对用户和计算机资源的统一管理,带来便利的同时也成为了最受攻击者重点攻击的集权系统。针对域控的攻击技术,在Windows通用攻击技术的基础上自成一套技术体系,将AD域攻防分为信息收集、权限提升、凭证窃取、横向移动、权限维持等攻击阶段,把域环境下众多......
  • 【攻防实操系列+内网渗透篇】--第3章:内网渗透防护基础①
    针对AD域安全防护产品,商业的如MicrosoftDefenderforIdentity、Tenable.ad、ITDR-AD,开源的WatchAD,都是可以选择的方向。面对众多的AD域攻击行为,我们也可以选择自建检测策略,通过分析AD域控的日志,对攻击行为进行实时检测。将AD域日志引入日志分析平台,通过模拟域攻击行为产生攻击......
  • npm,registry,镜像源,npm切换源,yarn,cnpm,taobao,nrs
    描述我们在使用node的npm下载依赖的时候,往往下载速度很慢,那是因为npm默认的是npm处于国外的官方镜像源。所以需要切换到国内的镜像源来加速依赖下载。所以本文推荐一款简单好用npm镜像源管理器,可以方便开发者管理自己的镜像源。推荐:npm-registry-nrs......
  • rollup开发一个npm插件/包
    创建一个项目创建一个空项目,并初始化npminit-y局部安装rollupyarnadd--devrollup并创建其配置文件rollup.config.jsexportdefault{ input:'src/main.ts', output:{ file:'bundle.js', format:'cjs' }};如果你的项目是源码是基于js写的,那么截止到目前,......
  • node 和 npm 如何进行版本升级
    node和npm在某种意义上,早已成为当前前端开发中不可或缺的工具。本文将介绍如何进行node和npm的版本升级和指定等等操作。查看node和npm版本:node-vnpm-v清除npm缓存:npmcacheclean-f如何升级npm当只需要简单的升级npm的时候,可以比较方便的处理。npm升级到最新版......
  • 如何修复 npm 错误代码 EINTEGRITY 问题
    当您运行该npminstall命令时,npm将查找在您的package.json文件中列为依赖项的包以进行下载和安装。package-lock.json当目录中有文件时,npm会将下载的tarball.tgz文件的校验和与在锁定文件中找到的校验和进行比较。当文件和锁定文件EINTEGRITY之间的校验和值不匹配时,就会发生如上......
  • docker部署anylink
    1.获取镜像dockerpullbjdgyc/anylink:latest2.查看命令信息dockerrun-it--rmbjdgyc/anylink-h3.生成密码dockerrun-it--rmbjdgyc/anylinktool-p123456#Passwd:$2a$10$lCWTCcGmQdE/4Kb1wabbLelu4vY/cUwBwN64xIzvXcihFgRzUvH2a4.生成jwtsecretdockerru......