需求:
多个vue项目的node_modules依赖包相同,若在每个vue项目中生成一个node_modules文件夹会造成资源重复,为了节省资源,可将一个node_modules依赖包同时链接到多个需要的项目中进行使用,此操作不会占用系统空间。
方案:
1、以管理员身份打开命令窗口:点击电脑左下角开始键,找到windows系统/命令提示符,右击更多,选择以管理员方式运行;
2、输入命令:mklink /d 需要链接的地址 引用的源文件地址
C:\Users\Administrator>mklink /d D:\work\test01\node_modules D:\common\node_modules
为D:\work\test01\node_modules <<===>> D:\common\node_modules 创建的符号链接
C:\Users\Administrator>mklink /d D:\work\test02\node_modules D:\common\node_modules
为D:\work\test02\node_modules <<===>> D:\common\node_modules 创建的符号链接
如上,成功将D:\common\node_modules依赖包文件夹链接到D:\work\test01、D:\work\test02项目中,即可代替项目中需要的node_modules依赖包,执行 npm 等命令。
符号链接
使用mklink命令,格式如下:
mklink [[/d] | [/h] | [/j]] <link> <target>
参数:
/d 创建“目录符号链接”,此命令在默认情况下将创建“文件符号链接”。
/h 创建“硬链接”,而不是“符号链接”。
/j 创建“目录链接(Directory Junction)”。
<link> 指定正在创建的“符号链接”的名称。
<target> 指定新“符号链接”引用的路径(相对路径或绝对路径)。
/? 显示帮助信息。
/d、/j、/h 及快捷方式的区别:
/d 创建符号链接(软连接)
只能是目录,不占空间。
windows下可以跨本地磁盘,也可以跨网络磁盘(共享目录)。
注:创建后生成文件夹,若为.txt文件创建链接仍生成文件夹,无法访问
/j 创建目录联接(软连接)
只能是目录,不占空间。
windows下只能跨本地磁盘。
注:创建后生成文件夹,若为.txt文件创建链接仍生成文件夹,无法访问
/d和/j源文件与链接文件的关联关系:
源目录删除后,链接目录无效,链接目录删除源目录不受影响;
源目录文件内容改变链接目录同步改变,链接目录内容改变源文件内容同步改变。
/h 创建硬链接
只能是文件,占空间(视觉上相当于复制)。
windows下不能跨磁盘(系统无法将文件移到不同的磁盘驱动器)。
无法为文件夹创建,为.txt文件创建后并非链接,而是相当于复制文件
源文件与链接文件的关联关系:
源文件删除链接文件不受影响,链接文件删除源文件不受影响;
源文件内容改变链接文件内容改变,链接文件内容改变源文件内容改变。
快捷方式
文件、目录均可,占很小的空间,与原文件大小无关。
windows下只能跨本地磁盘。
源文件删除,快捷方式失效,快捷方式删除,源文件不受影响。
注:Linux系统中,实现多项目共用一个node_modules依赖包可直接创建快捷方式链接,windows系统中需要使用mklink命令。