如何在搭载256GB SSD的M2芯片Mac Mini上共享多个React Native CLI项目的node_modules以节省存储空间?
如何在搭载256GB SSD的M2芯片Mac Mini上共享多个React Native CLI项目的node_modules以节省存储空间?
嘿,我太懂你这种256GB SSD不够用的焦虑了——M2 Mac Mini性能拉满,但存储吃紧真的头疼,尤其是多个React Native CLI项目的node_modules重复占空间,简直是存储空间的“吸血鬼”!针对共享node_modules来省空间,这里有几个开发者们实测靠谱的方案,给你唠唠:
一、用pnpm的内置共享存储(最省心的方案)
pnpm本身就是为解决重复依赖占空间的问题而生的,它会把所有依赖存在一个全局存储池里,每个项目的node_modules都是指向这个池的符号链接,完全不会重复下载相同版本的包:
- 先在Mac上安装pnpm:
brew install pnpm - 逐个处理你的RN项目:删掉项目里的
package-lock.json或yarn.lock,然后在项目根目录运行pnpm install - 如果遇到个别依赖的链接兼容性问题,就在项目根目录新建
.npmrc文件,加上node-linker=hoisted或者strict-peer-dependencies=false来调整,基本都能搞定。
二、Yarn Workspaces(适合习惯用Yarn的同学)
如果你一直用Yarn,那Workspaces绝对是共享依赖的好帮手,它会把所有项目的公共依赖统一放在父目录,只存一份:
- 把所有React Native项目移到同一个父文件夹下,比如命名为
all-rn-projects - 在这个父文件夹里创建
package.json,内容如下:
{ "private": true, "workspaces": [ "my-rn-app-1", "my-rn-app-2", "my-rn-app-3" // 替换成你的实际项目文件夹名称 ] }
- 最后在父文件夹下运行
yarn install,Yarn会自动把公共依赖提升到父目录的node_modules,每个项目只保留自己独有的依赖,JS层面的依赖就能共享啦。 - 小提醒:React Native的原生依赖(比如iOS的Pods、安卓的gradle依赖)还是得每个项目单独处理,但这部分占空间远不如
node_modules,已经能省出一大块空间了。
三、手动创建符号链接(适合不想换包管理器的情况,需谨慎)
如果不想换用pnpm或Yarn Workspaces,也可以手动用符号链接共享,但这个方法只适合所有项目依赖版本完全一致的场景,不然容易出现版本冲突:
- 先找一个固定位置,比如
~/shared-rn-node-modules,把其中一个RN项目的node_modules完整复制到这里 - 然后在其他每个RN项目里,删掉原来的
node_modules,运行命令ln -s ~/shared-rn-node-modules node_modules来创建符号链接,这样其他项目就会直接用这个共享的依赖文件夹了。
额外的存储空间小技巧
- 定期清理包管理器缓存:不管用pnpm、Yarn还是npm,都可以清理缓存来省空间,比如
pnpm store prune、yarn cache clean或者npm cache clean --force - 对于iOS项目的
Pods文件夹,如果所有项目的Pod依赖版本一致,也可以用符号链接共享,但一定要确保Podfile.lock完全相同,不然编译时会出各种奇奇怪怪的问题,谨慎操作哦!
备注:内容来源于stack exchange,提问作者BiRjU
相关产品推荐
相关产品推荐

