什么是软链接
软链接在linux中是一个很常见的概念,在windows中也很常见,最常见的形式应该就是快捷方式了。创建一个软链接并不会将原来的文件或文件夹复制一份,而是创建了一个文件,指向源文件的地址。类似索引或者指针。这样可以方便文件的多处访问,也减少了硬盘的冗余数据。
软链接在开发中的应用
当我们在开发一个项目时,经常会出现我们所编写的代码中会使用许多工具方法,但是这些工具方法又可以单出抽出作为一个个lib使用的情况,这种情况下一般会采取monorepo的代码仓库形式,以开源社区最常用的文件结构为例:
|-packages
|--pkg1
|---src
|---package.json
|--pkg2
|---src
|---package.json
|-package.json
复制代码
当项目中pkg1需要依赖pkg2时,如果调试时使用的是发布后的文件会很不方便,这时就需要将依赖链接到本地源文件。
临时软链接
- 在全局创建pkg2的链接
cd pkg2
npm link
复制代码
cd pkg2
yarn link
复制代码
- 在pkg1中引用pkg2的链接
cd pkg1
npm link pkg2
复制代码
cd pkg1
yarn link pkg2
复制代码
npm额外提供了一种不需要将pkg2链接到全局中的命令
cd pkg1
npm link ../pkg2
复制代码
但是上面的两种方法都不会在pkg1的package.json中显式声明对pkg2的依赖,每次重新安装依赖时还需要重新进行link,很不方便,所以npm和yarn还提供了一种能够显式声明的方式。
持久软链接
cd pkg1
npm install ../pkg2
复制代码
cd pkg1
yarn add file:../pkg2
复制代码
这两种方式都会在pkg1的package.json的文件中声明依赖"pkg2": "file:../pkg2",但是又有一些区别。
使用npm安装的依赖在node_modules中是以软链接的形式存在的,而yarn则是复制了一份源文件的副本,这样在调试时,对pkg2的修改也无法实时反馈到pkg1中了。
如果想使用yarn添加软链接的话,应该使用
cd pkg1
yarn add link:../pkg2
复制代码
这样获得的效果与npm install ../pkg2是一致的,但是,yarn在package.json中添加的声明依赖为"pkg2": "link:../pkg2",npm是无法解析这个声明形式的。所以npm和yarn请谨慎混用。
参考文档
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END





















![[桜井宁宁]COS和泉纱雾超可爱写真福利集-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/4d3cf227a85d7e79f5d6b4efb6bde3e8.jpg)

![[桜井宁宁] 爆乳奶牛少女cos写真-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/d40483e126fcf567894e89c65eaca655.jpg)