关于npm:本地包调试-npm-link

33次阅读

共计 1036 个字符,预计需要花费 3 分钟才能阅读完成。

引子

再次碰到调试 npm 本地包的状况,一时想不起来,看了下文档,实际操作了一下,发现了一些文档上没明写的货色。

  • Origin
  • My GitHub

介绍

依据文档介绍,包的链接分为两步。

第一步

在一个包文件夹内执行 npm link 将在全局文件 {prefix}/lib/node_modules/<package> 内,创立一个符号链接(symlink),这个链接指向 npm link 命令执行的中央。

第二步

到其它目录下,执行 npm link packageName 命令,将会创立一个从全局装置的 packageName 到以后文件内的 node_modules 下的符号链接。

须要留神的的是,packageName 是取自包的 package.jsonname 字段,不是文件夹名称。

包的名称可能有作用域前缀,如果有,packageName 也要对应加上。

实际

基于文档,结合实际的操作,对照看下产生的成果。

运行环境

  • 我的项目是基于 webpack 简略配置,本地运行的 server。
  • node 应用 nvm 治理的。
  • 我的项目已援用了包,需在根底上进行批改调试。
  • 零碎是 macOS。

操作

首先在包根目录上面执行 npm link 命令,呈现上面的提醒:

到对应的目录下,发现生成了提醒中所说的文件,就是文档中所说 符号链接(symlink):

试着改了一下本地的源文件,发现全局包外面对应的文件内容也跟着变动。

而后到我的项目中执行 npm link packageName 指令,呈现了上面的提醒:

到 node_modules 下发现对应的依赖包曾经产生了变动:

这里的包跟全局那个生成的包是一样的,包更新了,本地看没什么成果,起因是本地的 sever 有缓存,须要重新启动一下。留神这个文件夹图标多了一个箭头的标记,未 link 之前没有这个。

重启服务后,到源库批改源码,发现我的项目 node_modules 下同步了批改的内容,webpack 也检测到变动,主动刷新。

批改好后,想要复原到本来的包,解除 link 该怎么做?很奇怪,在 npm 官网文档上没找到阐明。

解除 link

到我的项目下执行上面的命令:

npm unlink --no-save package && npm install

npm uninstall 文档中能够发现,unlink 其实是 uninstall 的别名,本质上也是删除了包。

包不须要的 link 的时候,倡议也解除,到包目录下执行上面的命令:

npm unlink

参考资料

  • npm-link
  • Understanding npm-link
  • NPM Linking and Unlinking

正文完
 0