npm link详解
前言
`npm install` 可以把发布在 npmjs 平台上的模块包下载到本地,`npm install -g` 可以把包下下来的同时,还帮我们配置好全局变量,让我们可以直接使用命令而不是通过 node 来执行或者配置 `package.json` 的 script 脚本来 run。
但这仅限于已经发布的包,那对于未发布的包,要怎么测试使用呢?难道要把一个未经测试的包发布上去然后 install 下来测试?当然不能这么做,也不用这么做。npm 官方早已考虑到了这一点,给我们提供了测试本地的包的工具指令:`npm link`。
npm link原理
`npm link` 可以帮助我们模拟包安装后的状态,它会在系统中做一个快捷方式映射,让本地的包就好像 install 过一样,可以直接使用。
在 mac 中,我们在终端可以直接敲命令,其实是在执行 `/usr/local/bin` 目录下的脚本,这个目录可以认为是我们的全局命令所在的地方。
而当我们在 `npm install -g` 的时候,其实是将相关文件安装在 `/usr/local/lib/node_modules` 目录下,同时在全局命令 `/usr/local/bin` 目录下会有一个映射脚本,将其指向 /usr/local/lib 下的真实文件。这么做的好处是,可以在保证只有一份可执行文件的前提下,给命令取别名。
同样的,`npm link` 做的事情也是一样,唯一的区别是,它在 /usr/local/lib 下的 `node_modules` 里不是存的真实的文件,而是存了一个快捷方式,指向你当前执行 `npm link` 的目录。如果开发的的是 node 包,则执行的命令名和真实执行的文件入口,会通过项目的 `package.json` 里 `bin` 的配置来获取。
如何使用
cd projectdir
npm link
然后会看到输出类似如下的链接信息,说明成功。
/usr/local/bin/yourpakagename -> /usr/local/lib/node_modules/yourpackagename/xxx
/usr/local/lib/node_modules/yourpackagename/xxx -> /Users/username/Documents/xxx(your real project path)
全局link
测试 node 环境下运行的包时,需要使用全局 link。并且做`npm link`之前,需要在 `package.json` 里配置 `bin` 字段。
# package.json"bin" : {"your-command-name": "./path-to/your-command-entry-file"
}
然后再在当前目录下运行
npm link
成功后,就可以直接在终端执行全局命令 `your-command-name` 了。
项目下link
如果是测试前端包,跑在浏览器环境的,比如UI组件库,那需要做两次 link。
先进入待测试组件库目录,将开发的包 link 到全局:
npm link
之后,再进入要使用该组件库的工程,然后在工程中 link 这个组件库:
npm link your-ui-lib
现在你就可以在你的工程中使用这个 UI 组件库,就好像这个 UI 库被 install 到工程中一样。
- End -
相关文章推荐:
那些你可能不知道的 npm script
npm link详解相关推荐
- Smart Link详解及其配置
smart link相关概念和解释 smart link是什么?(华三.华为的私有协议) 如图所示,Switch A 通过 Switch B 和 Switch C 双上行到 Switch D. 1. ...
- Node.js学习笔记——模块加载机制及npm指令详解
文章目录 二.模块化 1.模块化的基本概念 2.Node.js 中的模块化 Node.js 中模块的分类 加载模块 Node.js 中的模块作用域 向外共享模块作用域中的成员 Node.js 中的模块 ...
- npm scripts详解
前言 这个主题之前有分享过的,不过没有今天这么基础,本文由@yangfch3带来的分享,比较偏原理跟实践性. 正文从这开始- npm 不仅可以用于 模块管理,还可以用于 执行脚本. package.j ...
- [yc]详解link
[yc]详解link 详解link 有些人写C/C++(以下假定为C++)程序,对unresolved external link或者duplicated external simbol的错误信息不知 ...
- 微信小程序使用 npm 包,举例图文详解
使用 npm 包前提条件: 下载安装,配置npm环境变量,不懂得可以上网查教程,本文不再描述 小程序使用 npm 包简述 1.初始化 package.json 2.勾选允许使用 npm(新版微信小程序 ...
- npm命令--安装依赖包--用法/详解
原文网址:npm命令--安装依赖包--用法/详解_IT利刃出鞘的博客-CSDN博客 简介 本文介绍npm如何安装依赖包. 用法 命令 作用 详述 npm install <pkg> //同 ...
- 详解BLE 空中包格式—兼BLE Link layer协议解析
BLE有几种空中包格式?常见的PDU命令有哪些?PDU和MTU的区别是什么?DLE又是什么?BLE怎么实现重传的?BLE ACK机制原理是什么?希望这篇文章能帮你回答以上问题. 虽然BLE空中包(pa ...
- linux ln(link) 命令详解
linux ln(link) 命令详解 功能说明:连接文件或目录. 语 法:ln [-bdfinsv][-S <字尾备份字符串>][-V <备份方式>][--help][--v ...
- Windows系统下nodejs、npm、express的下载和安装教程详解
这篇文章主要介绍了Windows系统下nodejs.npm.express的下载和安装教程详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下 1. node.js下载 首先进入http://nod ...
- Node.js npm 详解
一.npm简介 安装npm请阅读我之前的文章Hello Node中npm安装那一部分,不过只介绍了linux平台,如果是其它平台,有前辈写了更加详细的介绍. npm的全称:Node Package M ...
最新文章
- 源码安装nginx开启SSL功能
- 什么是跨域,什么是同源
- 那些程序员身上共有的属性,这就是他为什么比你进步快的原因!
- 5000字“肝”了这篇IP协议
- 【BZOJ3930】[CQOI2015]选数 莫比乌斯反演
- 【Python】Scrapy入门实例
- mysql的txid是什么_mysql-存储引擎
- #数组元素相乘_C++ 矩阵相乘
- 二级域名共享cookies
- 简约清新二次元引导个人主页源码
- 基于python的电影推荐系统论文_一种电影推荐系统的设计与实现
- 查看alexa世界排名
- tar: R-4.1.0.tar.gz: Cannot read: Is a directory tar: At beginning of tape, quitting now tar: Error
- 利用python做出电视剧收视率排行榜
- mongodb的java驱动_MongoDB的java版本驱动
- 【C语言】之实现回文数判断
- 区块链可扩展性技术:闪电网络
- 毕业求职:求职面试前不知如何准备? 4 个秘诀助你自信面试!
- # 英语听抄 (英)
- 2022年全球与中国数模转换器市场现状及未来发展趋势
热门文章
- java生产者消费者模型
- ElasticSearch(十二):Spring Data ElasticSearch 的使用(二)
- RuntimeError: latex was not able to process the following string: b‘lp‘
- 自制一寸照片的尺寸规范
- linux生成4g文件,linux中创建超过4g文件的方法-o_largefile?
- java 简体繁体互相转换
- 朴素贝叶斯——新闻分类
- ffmpeg(七)合并音视频文件
- xp 无线网络 搜索 服务器,WinXP系统搜索不到无线网络的解决方法【图】
- 研大考研:2015考研政治认识论知识点