随着前端项目越来越大,我们往往会将一些逻辑、组件或资源从项目中抽离出来,形成单独的npm包。这样,这些内容就可以非常容易地在其他项目中进行复用。然而,当我们需要联调的时候,问题就变得复杂起来,我们需要让依赖包能够响应被依赖的包的变更。这时候,基于文件链接的npm link就极大地方便了我们调试。
文件链接
文件链接是类Unix操作系统中的概念,又分为软链和硬链。软链又被称为符号链接,其是一个单独的特定类型的文件,存储的内容只是一个路径的字符串,如./tsconfig.json
,/var/tmp
这种,和Windows中的快捷方式非常类似。而硬链则是在文件目录中不同的索引节点指向相同的文件,也就是说,硬链和被链接的文件是完全等价的。
下面执行ls -il
的截图可以很好地展示软链和硬链的原理上的区别:
在这个文件夹中,a.txt是原始文件,b.txt是a.txt的一个硬链,可以看到在ls的结果中两个文件除了文件名,其他信息,包括inode号(文件系统中的唯一序号,上图输出中的第一列)是完全一致的。而c.txt则是a.txt的一个硬链,其文件id与a.txt不同。更进一步,我们可以看到a.txt和b.txt的引用计数(输出中的第3列