你所不知道的模块调试技巧 - npm link

简介: node 应用开发中,我们不可避免的需要使用或拆分为 npm 模块,经常遇到的一个问题是:

1. 背景

node 应用开发中,我们不可避免的需要使用或拆分为 npm 模块,经常遇到的一个问题是:

新开发或修改的 npm 模块,如何在项目中试验?

新同学一般会有以下几种方式:

为了方便示范,我们假设项目是 my-project, 需要用到一个独立的 my-utils 模块

1.1 发布一个 beta 版本

  • 优点:你高兴就好。
  • 缺点: 无趣+无趣+无趣,麻烦+麻烦+麻烦。

1.2 直接用相对路径安装


$ cd path/to/my-project
$ npm install path/to/my-utils

  • 优点:简单明了
  • 缺点: 调试过程中往往需要微调,此时需要切换到 my-utils 目录修改,然后反复重新 install,很麻烦

1.3 使用软链


$ cd path/to/my-project/node_modules
$ ln -s path/to/my-utils my-utils

  • 优点:软链后,两边修改直接同步
  • 缺点: 指令操作麻烦,不同操作系统语法不一样

2. 正解 - npm link

但其实 npm 本身已经对此类情况提供了专门的 npm link 指令。

相关文档: docs.npmjs.com/cli/link

下面我们简单介绍下用法:


$ cd path/to/my-project
$ npm link path/to/my-utils

简单的替换一个单词,就搞定了,cool~

如果这两种的目录不在一起,那还有一种方法:


$ # 先去到模块目录,把它 link 到全局
$ cd path/to/my-utils
$ npm link
$
$ # 再去项目目录通过包名来 link
$ cd path/to/my-project
$ npm link my-utils

该指令还可以用来调试 node cli 模块,譬如需要本地调试我们的  egg-init,可以这样:


$ cd path/to/egg-init
$ npm link
$ # 此时全局的 egg-init 指令就已经指向你的本地开发目录了
$ egg-init # 即可

想去掉 link 也很简单:


$ npm unlink my-utils

3. 写在最后

  • 该方法只是为了最后一步调试,模块本身的正确性,应该更多的通过单元测试来保证。
  • 单元测试相关内容,可以参见:单元测试


原文发布时间为:2018年06月29日
原文作者:掘金
本文来源: 掘金  如需转载请联系原作者
相关文章
|
6月前
|
存储 缓存 JavaScript
npm link 与 pnpm link 的用法以及不同之处
npm link 与 pnpm link 的用法以及不同之处
433 0
|
6月前
|
JavaScript Unix Shell
#! /usr/bin/env node 命令与 npm link 建立项目间软连接(一)
#! /usr/bin/env node 命令与 npm link 建立项目间软连接(一)
126 0
|
6月前
|
JavaScript 前端开发
介绍npm模块的安装机制,为什么输入npm install 就可以自动安装对应的模块?如何初始化?
介绍npm模块的安装机制,为什么输入npm install 就可以自动安装对应的模块?如何初始化?
93 0
|
6月前
|
资源调度 前端开发
npm/yarn link 测试包时报错 Warning: Invalid hook call. Hooks can only be called ...
npm/yarn link 测试包时报错 Warning: Invalid hook call. Hooks can only be called ...
80 0
|
6月前
npm 包本地调试(详细流程:包本地路径、npm link 、yalc)
npm 包本地调试(详细流程:包本地路径、npm link 、yalc)
311 0
|
6月前
|
JavaScript 前端开发 开发工具
npm 包和模块简介
npm 包和模块简介
|
JavaScript
vue踩坑记-在项目中安装依赖模块npm install报错
vue踩坑记-在项目中安装依赖模块npm install报错
96 0
|
JavaScript 前端开发
npm模块的安装机制
npm模块的安装机制
96 0
|
资源调度 前端开发
npm/yarn link 测试包时报错 Warning: Invalid hook call. Hooks can only be called ...
npm/yarn link 测试包时报错 Warning: Invalid hook call. Hooks can only be called ...
375 0
npm 包本地调试(详细流程:包本地路径、npm link 、yalc)
npm 包本地调试(详细流程:包本地路径、npm link 、yalc)
678 0