npm安装的包在哪里-本地项目目录与全局目录分两处存放
之前折腾项目依赖的时候,总搞不清npm安装的包在哪里,有时候改配置文件找半天文件,翻遍文件夹都摸不着头绪,白白浪费不少时间。一开始只知道装完依赖就能用,却完全没留意这些文件具体落在电脑的哪个位置,每次需要手动修改包内内容,或是清理无用依赖,都只能盲目搜索,效率低得离谱。
直接在项目文件夹里执行npm install安装的包,全部都会存放在当前项目根目录下的node_modules文件夹里。这个文件夹一般会和package.json文件处在同一层级,打开项目文件夹第一眼基本就能看到。当时为了确认这点,特意新建了一个空白文件夹,初始化npm之后安装了一个常用工具包,刷新目录之后,新的文件夹立刻就出现了,里面层层嵌套着下载好的各类文件,项目运行时调用的依赖,全都是从这个位置读取内容。
有时候图省事,会加上-g参数执行全局安装,这类包就不会留在单个项目里了。全局安装的路径和本地完全不一样,不同系统会有细微差别,Windows系统下大多藏在用户目录下的AppData文件夹内部,Mac和Linux系统则偏向存放在用户主目录的.npm文件夹当中。一开始分不清本地和全局安装的区别,把很多工具包反复在本地安装,导致每个项目都多出一份重复文件,占用了不少磁盘空间,文件夹体积也变得异常庞大。
想快速定位全局包的具体路径,不用一层层手动翻文件夹。直接在终端里输入npm root -g这条指令,按下回车之后,屏幕上就会把完整的文件路径显示出来。试过好几次,不管换哪台设备,这条指令都能精准给出地址,比自己逐个目录查找要省心太多,找到路径之后,就能直接进入文件夹查看、删除或者更新全局安装的包。
同一个包,本地装一份、全局再装一份,文件内容其实没有区别,只是作用范围不一样。本地node_modules里的包,只对当前这一个项目生效,换个项目就无法调用;全局安装的包,整台设备上所有位置都能调用,大多用来存放命令行工具类的依赖。之前踩过一个小问题,项目里版本和全局版本不一致,运行代码时频繁出现报错,挨个核对路径之后,才发现是两处包版本冲突导致的。
要是项目里依赖太多,node_modules文件夹的文件数量会多到吓人,普通搜索功能甚至会卡顿。没必要一个个点开子文件夹查找内容,确定好目标包的名称之后,直接在文件夹顶部的搜索框输入名字,系统会快速筛选出对应的文件夹和文件。日常开发里,很少会去改动包里的原生文件,大多时候只是确认是否安装成功,或是彻底卸载无用依赖,找对位置之后,这些操作都能顺利完成。
关掉终端的时候,盯着屏幕上刚查出来的路径,也没再多想别的,转头就去整理各个项目里冗余的依赖文件了。