Lynne,一个能哭爱笑永远少女心的前端开发工程师。身处互联网浪潮之中,热爱生活与技术。
前言
node 应用开发中,不可避免的需要使用或拆分为 npm 模块。
那么在开发npm包的过程中,借助 npm link 可以很方便地实现调试代码,本篇文章主要介绍 npm link 的5种方式,前两种为主流方式。一看就会~~
方法一 link 模块项目路径
$ cd path/to/my-project // 先切到引入项目路径下
$ npm link path/to/my-utils // 然后 link 被引入npm包的项目路径
上述方法适用于引用和被引入项目在同一个目录下。
去掉 link 很容易,只要:
$ npm unlink path/to/my-utils
方法二 link 模块项目名称
$ # 先去到模块目录,把它 link 到全局
$ cd path/to/my-utils
$ npm link
$
$ # 再去项目目录通过包名来 link
$ cd path/to/my-project
$ npm link my-utils
这种方式应该是最受开发者欢迎的了!
我在项目中经常采用这种方式:
npm link
npm link XXX
去掉 link 很容易,只要:
$ npm unlink my-utils
图中出现了wraning,明显是别的包,不用care。
方法三 使用软链
$ cd path/to/my-project/node_modules
$ ln -s path/to/my-utils my-utils
可以用npm config get prefix
查看路径前缀。
缺点: 指令操作麻烦,不同操作系统语法不一样
但是同一操作系统下还是很香的~~~~
下面举两个同样可行但不太好用的反例:
发布beta 版本
除了不占用正式版本好像没有区别,太麻烦了!
直接用相对路径安装
$ cd path/to/my-project
$ npm install path/to/my-utils
缺点是切换路径很麻烦。
发布
调试完就是发布了
一般使用latest来设置用户npm install默认安装的版本,使用alpha来设置测试版本,当测试版本测试完毕之后,使用
npm dist-tag add <pkg>@<version> [<tag>]
来切换不同tag的版本号,例如,1.3.1已经测试完成,我们可以使用npm dist-tag add B@1.3.1 latest
来把原本属于alpha的分支切到latest。tag不加的话默认是latest。
当然,还可以通过mpm dist-tag add
来添加你自己的tag。
补充: fix bug
这么简单的操作还有人遇到bug?不愧是我。。。
npm link 本地更新后的包发现报错: not found 'moudule'...
两个排查思路,根据报错判断并排查安装没有found的包:
-
更新包是否安装了依赖包 - 犯的第一个错,本地更新的包没有 npm install...
-
更新包的依赖包是否需要在本地安装
-
为了避免复杂的依赖包安装问题,最后选择了软链的方式:
直接
$ cd path/to/my-project/node_modules
$ ln -s path/to/my-utils my-utils
这里的 path 直接用文件路径即可,不必加文件前缀。
首先我们要知道 npm link 的原理,这种link是通过软链实现的,link的本地包会完全取代我们项目 node_moudules中原来的包,可能就会删除一些项目中的依赖包,因此要在项目中单独安装这些被误删的依赖包。
总结
如此简单的模块调试大法你学会了吗?
最后一定要了解的package.json小知识:
- package.json:用于标注项目中对各个npm包的依赖。
- package-lock.json:用于记录当前状态下实际安装的各个npm package的具体来源和版本号。