npm link使用记录

npm link的文章算是烂大街了,但我在百度的时候仍然感觉不够直观。故此记录一下,不写太复杂。

1、使用场景。

如果你需要debug项目正在引用的依赖包,而node_module下面调试不起作用时,尝试使用npm link。
npm link要求项目node_module里可以有同名的包,但link debug的同名包必须放在项目外面任意的位置。
一个node install packagename的npm包可能不存在完成的源码,只有编译后的js文件。无法直接修改的时候,则使用npm link外部同名包进行debug,外部的包可以在github上找到完成源码。则可进行修改,重新编译。
不起作用一般是:
(1)调试源码的话需要重新build,生成类似dist,es,umd,common目录下的js文件,才会彻底生效。
(2)依赖包的package.json指向入口文件的main字段,可能还不是最终生效的,如果有多个目录(最多三四个),依次尝试即可,不要总卡在main字段指向的目录里面尝试(都是教训)。
(3)js代码可能会不好阅读,尽量寻找源码。习惯压缩js的话,不用每次编译那就更好。

2、大概原理。

调试的包要能使用源码生成编译后的js文件。
依赖包目录: npm link 表示连接到全局node_module目录
项目目录: npm link 依赖包名(有人说是路径)
根据使用经验, 这个命令会自动找全局node_module目录下同名包,然后把项目实际使用的包的引用切到全局。就算本项目node_module也含有该包,也不再使用。
*注意:npm link不允许将在项目内的包链到全局然后再链回项目,命令会直接报错。

3、修改依赖包。

依赖包在github上一般都能搜到源码,全部下载。package.json的scripts里面含有编译命令,修改后运行编译命令,一般会生成编译后的js代码目录dist/es/umd等。
npm link后重新启动项目,一般是npm start(看项目本身的package.json的scripts).

4、包修改的代码不起作用?

如果你尝试了依赖包的所有目录入口js文件,连一个console.log都不能起作用。有可能是项目对启动运行过后的node包进行了缓存,比如Umi框架的.umi目录下都是缓存文件,删除.umi,然后npm start即可生效。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值