我正在开发一个PHP框架作为一个作曲家包,将在我公司的50多个项目(网站)中重复使用。
每个网站都相对较小(15-20个PHP文件,总共不到1-2 MB)。 这些网站也将使用作曲家。
框架包:
网站:
框架和网站都是私有项目,由于公司政策,不能在GITHUB或Packagist中共享。
{
"name": "Company/Framework",
"require": {
"php": ">=5.6.4",
"mpdf/mpdf": "dev-master",
"monolog/monolog":"1.2"
},
"autoload": {
"psr-4": {
"Company\\Framework\\": "src/"
}
}
}
{
"repositories": [
{
"type": "path",
"url": "../Framework/",
"options": {
"symlink": false
}
}
],
"require": {
"Company/Framework": "dev-master",
"mpdf/mpdf": "dev-master"
},
"autoload": {
"psr-4": {
"Company\\Site01\\": "src/"
}
}
}
我的问题是,作曲家用其依赖项和整个框架目录填充每个网站的供应商目录。 最后,All最终使用了大量的磁盘空间,大约40多GB,主要是使用相同的VENDOR包,一遍又一遍地重复。 我们的PHP代码不到整个项目的1%。
我的问题是:
开发私有包的最佳做法是什么(不是 在公众中分享并在其他项目中重复使用它们?
如何正确地重复使用常用的作曲家库,而不是一遍又一遍地重复使用供应商代码?
答案 0 :(得分:1)
您不应将供应商文件夹保留在库代码中。删除供应商文件夹,只在库的composer.json中声明库的依赖项。
当您从项目中运行composer install
时,composer会将库复制到项目的供应商文件夹中,并将库的依赖项安装在项目内部。
一个更好的选择是使用来自GitHub或Bitbucket的私有存储库,因为您可以控制有权访问它的人,但仍可以使用诸如标记之类的东西进行版本控制。