GitHub提交是否忽略node_modules?pull项目正确操作方法
Git 仓库依赖目录处理规则(以Svelte项目为例)
任何场景下都不要将node_modules目录提交到GitHub仓库,这个目录存放的是所有第三方安装依赖,体积从几百MB到几GB不等,还包含大量和本地操作系统、Node版本绑定的二进制文件,提交上去不仅会让仓库体积暴涨,还会导致其他设备拉取代码后运行报错。
Svelte官方脚手架生成的项目,默认会在根目录的.gitignore文件里提前写入node_modules/忽略规则,正常初始化项目不需要手动调整这部分配置。
正确操作流程
1. 首次推送本地项目到远程仓库
- 先确认根目录存在
.gitignore文件,且包含node_modules/规则,如果是手动搭建的项目没生成这个文件,自己新建一个加上对应规则即可 - 初始提交只需要提交源码目录(
src/、static/)、项目配置文件(package.json、依赖锁文件、svelte.config.js、vite配置等),不要选中node_modules目录提交 - 推送完成后远程仓库本身就不会存储
node_modules相关内容,符合代码提交规范
2. 执行clone、pull操作拉取代码时的适配
- 第一次在新设备上
git clone仓库时,拉下来的文件里没有node_modules是正常现象,不是拉取出错 - 拉取完成后,先在项目根目录执行你所用包管理器的依赖安装命令:
- 使用npm执行:
npm install - 使用pnpm执行:
pnpm install - 使用yarn执行:
yarn
- 使用npm执行:
- 命令执行完成后,会自动根据仓库里提交的依赖锁文件(
package-lock.json/pnpm-lock.yaml/yarn.lock)安装版本完全匹配的所有依赖(包括Svelte核心库),本地自动生成node_modules目录,直接就能启动运行项目,不会出现版本不一致问题 - 后续日常执行
git pull拉取最新代码时,如果拉取的更新里包含package.json或者依赖锁文件的变动,拉完再重新执行一次依赖安装命令,更新变动的依赖即可;如果这两个文件没有改动,不需要对node_modules做任何操作,直接正常开发就行
常见误区说明
- 不要认为“把node_modules传上去别人不用装依赖更方便”:跨设备、跨系统的node_modules本身不通用,传上去反而会导致其他人运行项目时报错
- 不需要担心不提交node_modules会导致依赖版本不一致:只要把依赖锁文件提交到仓库,所有协作者安装的依赖版本会完全对齐,比手动上传node_modules的可靠性高很多
- Svelte本身作为项目依赖,本身就存放在node_modules目录下,不需要单独提交,安装依赖时会自动拉取对应版本
内容的提问来源于stack exchange,提问作者badsyntax
相关产品推荐
相关产品推荐

