Git提交时该把dist目录一起提交吗?
我们团队用Vue CLI搭的项目,每次build完都会生成dist目录。我不确定要不要把这个目录也git add进去,因为感觉它属于构建产物,但又怕别人拉代码后没法直接部署。
之前试过不提交dist,结果测试环境部署失败了;提交了又觉得仓库变得很臃肿。到底该怎么处理?
<template>
<div id="app">
<HelloWorld msg="Welcome to Your Vue.js App" />
</div>
</template>
<script>
import HelloWorld from './components/HelloWorld.vue'
export default {
name: 'App',
components: { HelloWorld }
}
</script>
先说结论:不要提交 dist 目录。
dist 是构建产物,相当于你把源代码编译成了浏览器能直接运行的静态文件。这东西有两个特点:第一,每次 build 完内容都可能不一样,git 会认为文件经常变化,产生大量无意义的 diff;第二,它完全可以通过源码重新构建出来,既然这样何必占仓库空间呢。
你之前遇到的问题——不提交 dist 导致测试环境部署失败——这不是因为你不应该提交 dist,而是你的部署流程没配置对。
正确做法是这样的:
第一步,把 dist 加入 .gitignore
打开项目根目录下的 .gitignore 文件(如果没有就新建一个),加上这么一行:
这样 git 就会自动忽略这个目录,不会提示你提交。
第二步,配置正确的部署流程
测试环境和生产环境部署时,应该在服务器上执行构建命令,而不是直接拉 dist 目录。最常见的做法是用 CI/CD,比如 GitHub Actions、GitLab CI 或者 Jenkins。
举个小例子,如果你用 GitHub Actions,可以在项目根目录创建 .github/workflows/deploy.yml:
这样每次代码合并到 main 分支时,CI 就会自动构建并部署,你不需要手动处理 dist 目录。
第三步,本地开发时注意
平时开发用
npm run serve就行,这个是热重载的开发模式。如果你想本地预览构建结果,可以手动跑npm run build,然后看看 dist 目录的内容,但提交代码时别把 dist 加上。总结一下:dist 不提交是对的,部署失败是因为部署流程需要配置 CI/CD 或者在服务器上执行构建命令,而不是把构建产物提交到仓库。