Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

你所不知道的模块调试技巧 #2

Open
stone-jin opened this issue Aug 12, 2017 · 0 comments
Open

你所不知道的模块调试技巧 #2

stone-jin opened this issue Aug 12, 2017 · 0 comments

Comments

@stone-jin
Copy link
Owner

0.本文摘录来源

atian25/blog#17

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_nomodules
$ ln -s path/to/my-project my-utils
  • 优点:软链后,两边修改直接同步
  • 缺点:指令操作麻烦,不能操作系统语法不一样

2.正解 - npm link

但其实npm本身已经对此类情况提供了专门的npm link指令
相关文档:https://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.写在最后

  • 该方法只是为了最后一步调试,模块本身的正确性,应该更多的通过单元测试来保证。
  • 单元测试相关内容
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant