我应该为Laravel使用.gitignore吗?

Art*_*sov 5 git laravel

我想知道是否可以接受的做法是不要完全使用.gitignore并提交所有内容,至少对于中小型项目.Laravel,就像我能想象的任何框架一样,有很多依赖关系,所以它们被设置为被git忽略.这是我的默认.gitignore文件:

/vendor
/node_modules
/public/storage
Homestead.yaml
Homestead.json
.env
Run Code Online (Sandbox Code Playgroud)

我理解vendornode_modules包含依赖项.Homestead文件是本地计算机设置,.env包含环境设置,并且本地和远程服务器之间不同.我不确定storage它里面有什么.

当我拉出很多依赖项时,我遇到了一个问题,我没有保持良好的跟踪,而且我node_modulesvendor目录分别以150,000个文件扩展到1 GB.我很快意识到这是一个错误,并试图回滚到以前的版本.当然,这失败了,因为没有跟踪这两个文件夹.

花了一天时间从头开始重建我的项目后,我现在很想.gitignore从Laravel项目中删除所有文件.鉴于我只在本地使用git并且不推送到服务器,提交所有内容是一个好主意吗?还有其他人这样做吗?

Chr*_*ris 2

分两部分回答。

爆炸

您提到您的供应商/node_modules 文件夹的大小呈爆炸式增长。即使您没有将它们纳入版本控制中 - 如果您正确使用 Composer 和 npm(通过使用 npm 的 --save 指令),所有模块都应分别列在 Composer.json 和 package.json 中。这意味着即使安装的库(在供应商+node_modules中)不在版本控制中,package.json和composer.json也应该是——这意味着你应该能够回到过去,并在那个时间点安装软件包使用你的作曲家/包 jsons。

我是不是该...

这个答案的第二部分是您是否应该在版本控制中包含供应商/node_modules?这是一个公平的问题,而且经常被问到。我认为最终这取决于您的部署意图。

您的源(github、bitbucket 等)上是否有基本上无限的空间,并且您希望您的部署是一个简单的超级git push生产版本的简单超级版本?您可能可以提交所有内容,包括供应商库。这样您就可以完全控制服务器上的内容。

实际上,当你推送时,你可能需要这样做php artisan migrate,所以反过来,你可能会开始考虑 git hooks,并且这个过程开始变得有点复杂(但可以说更好/可扩展/强大)。有了这些钩子,您就可以开始考虑针对 package.json 和composer.json 文件运行composer install + npm install(没有git 中的整个供应商库)。如果你走这条路,你想确保你的作曲家/包 json 是好的并且被锁定 - 没有“3.xx”版本号 - 你想要你知道可以工作并且已经过测试的锁定版本。