使用expo init新建空白项目磁盘占用达190MB是何原因
问题结论
你的操作不存在任何错误,当前使用的Node.js 16.16.0、npm 8.11.0、expo-cli 5.4.12都是适配Expo项目的稳定版本组合,初始化blank模板后node_modules占190MB左右是完全正常的现象,不是环境配置故障。
体积偏大的核心原因
- 依赖集本身的设计:Expo的blank模板并非"零依赖最小模板",默认会预装完整的Expo跨端运行时核心,包含React Native框架层、Metro打包服务、三端(iOS/Android/Web)适配的基础原生模块、类型定义文件、调试工具链,这些依赖本身就包含大量预编译脚本、跨平台兼容资源,占总体积的70%以上。很多你初期没用到的模块(比如权限申请、文件访问、字体加载、系统常量获取等)是提前预集成的,目的是避免后续手动安装时出现版本兼容问题。
- 包管理器的默认行为差异:你使用的npm 8.11.0默认采用相对保守的依赖安装策略,不会做激进的子依赖扁平化去重,部分重复的子依赖会被保留在对应包的子目录下,相比pnpm、yarn等包管理器的安装结果,体积会高出15%-25%,属于版本正常表现,不是安装异常。
- 生态默认常态:整个React Native/Expo生态的初始化项目node_modules体积普遍在150MB-300MB区间,属于开发者默认认知里的常规情况,因此很少有相关的公开讨论。只要你执行
expo start可以正常启动开发服务、能正常连接调试端,就说明环境完全可用。
可选优化方案
如果需要缩减node_modules体积,可以做以下调整:
- 切换包管理器为pnpm,按照Expo要求在项目根目录新增配置
.npmrc后重新安装依赖,可将初始node_modules体积压缩到80MB-100MB区间,不会影响项目正常运行 - 不要手动修改node_modules内的文件,项目根目录默认生成的
.gitignore已经配置了忽略该文件夹的规则,提交代码时不需要上传这个目录,实际项目源码体积通常在5MB以内
注意:不要为了缩减体积手动删除node_modules内你觉得"没用"的包,很容易导致依赖缺失、项目启动报错。
内容的提问来源于stack exchange,提问作者asher
相关产品推荐
相关产品推荐

