请问自己在本机上用compsoer安装的工程可以正常跑,但是放上github后在服务器clone下来后提示确实vendor文件,有人告诉我需要用composer安装,我不太理解,请问具体应该怎么做呢,另外,其中的机制是什么,为什么直接把工程clone下来不是应该具备所有需要的文件了吗,谢谢
vendor
目录都是一样的 而且原则上不允许任何手动修改,所以完全没有必要纳入版本控制(在.gitignore
里配置)。只需要知道composer.json
就能知道vendor
下都有什么,所以你克隆下代码后要安装vendor
。如果你怕本地安装的插件和服务器上的插件版本有差异导致bug,那么composer.lock
文件就可以起作用了,它记录了你当时安装插件的具体版本,团队其他小伙伴也可以根据lock文件安装和你完全一样版本的插件(包括yii2核心文件)。
因为.gitignore把vendor忽略掉了,你的情况,可以这样处理:
将根目录的.gitignore打开,注释掉对/vendor的忽略
在vendor目录写个shell删除vendor中的所有.gitignore文件,每次执行过composer对vendor目录中的内容有更新,就执行一下这个shell,这样保证所有vendor的文件都能放到git库。比如clean.sh,内容如下:
BTW,人家这样设计.gitignore是因为人家网速快,部署服务器的时候,执行一下composer update –prefer-dist即可得到vendor的文件。
帮忙顶下!
有忽略的文件。还得装忽略的文件
确定clone的根目录下有composer.json
和 composer.lock
;
安装好composer后到命令行到你的根目录下执行:
然后vendor就回来了。