首页 > 其他分享 >npm link 用法

npm link 用法

时间:2024-04-19 11:12:36浏览次数:36  
标签:npm node npmModule 用法 链接 link 目录

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包名    

参考资料:

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

标签:npm,node,npmModule,用法,链接,link,目录
From: https://www.cnblogs.com/ygunoil/p/18145371

相关文章

  • MyBatis: databaseId的用法
    可以通过databaseId来区分执行的SQL是在MySQL上还是在Oracle上。一、在配置文件mybatis-config中配置databaseId:<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEconfigurationPUBLIC"-//mybatis.org//DTDConfig3.0//EN""http://......
  • LinkedHashMap排序
    importjava.util.LinkedHashMap;importjava.util.Map;importjava.util.TreeMap; publicclassSortLinkedHashMapByKey{publicstaticvoidmain(String[]args){//创建一个LinkedHashMapLinkedHashMap<Integer,String>linkedHashMap=newLinkedHashMap<......
  • 【nvm,npm , cnpm , yarn】
    nvmnvm官网nvm是一个nodejs的版本管理工具。可以安装和切换不同版本的node.js。nvminstall[arch]:安装指定版本nodenvmlist[available]:查看已安装的node版本列表。available表示查看所有可安装的node版本列表nvmon:开启node.js版本管理。nvmoff:关闭n......
  • asan/gpreftools内存调试简明用法
     启用高版本gccsource/opt/rh/devtoolset-11/enable libasan编译选项makeEXTRA_CFLAGS="-O0-g-fsanitize=address-fsanitize-recover=address-fno-omit-frame-pointer-static-libasan-DBUILD_DEBUG-UDPDK_MALLOC-DRTE_MALLOC_ASAN" gpreftools编译选项makeE......
  • .net 6 C#中System.IO.Path类的用法
    1.说明/*PerformsoperationsonSystem.Stringinstancesthatcontainfileordirectorypathinformation.Theseoperationsareperformedinacross-platformmanner.对系统执行操作。包含文件或目录的字符串实例路径信息。这些操作是以跨平台的方式执行的。*/......
  • GaussDB(DWS)基于Flink的实时数仓构建
    本文分享自华为云社区《GaussDB(DWS)基于Flink的实时数仓构建》,作者:胡辣汤。大数据时代,厂商对实时数据分析的诉求越来越强烈,数据分析时效从T+1时效趋向于T+0时效,为了给客户提供极速分析查询能力,华为云数仓GaussDB(DWS)基于流处理框架Flink实现了实时数仓构建。在本期《GaussDB(DW......
  • openai包基础用法
    Note包含同步&异步完成&流式闲言少叙,看剑Requirementspipinstallopenai-UCodeimportopenaiimportasynciodefpp(obj:str):print(obj.center(50,"*"))#syncdef_sync():##w/ostreampp("Syncw/ostream")response......
  • mysql中replace into用法
    前言replaceinto跟insertinto功能类似,不同点在于:replaceinto首先尝试插入数据到表中如果发现表中已经有相同的数据(根据主键或者唯一索引判断)则先删除原来的数据,然后插入新的。否则,直接插入新数据。注意:插入数据的表必须有主键或者是唯一索引!否则的话,replaceinto会......
  • ES6中数组的高级用法
    1.箭头函数和数组方法的结合:使用箭头函数结合数组方法可以简化代码:constnumbers=[1,2,3,4,5];//使用箭头函数的map方法constdoubled=numbers.map((num)=>num*2);console.log(doubled);//输出:[2,4,6,8,10]2.解构赋值和数组方法的结合:constpoi......
  • Python中operator 模块的用法
    operator模块提供了一套与Python的内置运算符对应的高效率函数。1.函数的种类函数包含的种类有:对象的比较运算、逻辑运算、数学运算和序列运算2.比较运算运算函数语法小于lt(a,b)a<b小于等于le(a,b)a<=b大于gt(a,b)a>b大于等于ge(a,b)......