让我们说symfony项目a在项目的根文件夹中包含一个名为MyCompany/MyBundle
的包。
由于这个捆绑包是我所有项目的某种标准软件,我想轻松分享它们并将其复制到项目b,c,......
同步此(私人)捆绑包的最佳方式是什么?
* Git / Composer解决方案的问题:这需要两个repos,一个用于项目,一个用于Bundle,但Bundle在项目中。此外,作曲家会将其下载到vendor
上的其他项目,而不是根文件夹)
答案 0 :(得分:1)
由于这个捆绑包是我所有项目的某种标准软件......
在这种情况下,您应该将其解压缩到一个独立的包中,以便将其包含在项目的composer.json中。然后,您可以在vendor/...
文件夹中看到您的捆绑包。
如果您的捆绑包不依赖于来自主项目的任何参数,您可以在Creating a simple symfony vendor bundle to use it in a main project看到它是如何完成的。
如果你的捆绑包依赖于来自主项目的参数,你可以在这里看到它是如何完成的:Creating an encrypt-decrypt symfony bundle that depends on config parameters of main application
关于您对更新项目所需时间的担忧,您不应该担心它,因为:
在给定项目上更新捆绑包不会超过2分钟。
就像@Jason Roman所说,你得到了一致性,否则你很可能在某些项目中做不同的事情。相信我,它发生了!
您想知道“...best way to sync bundle
”。
答案 1 :(得分:1)
当共享捆绑仍处于大量开发阶段时,还有第二种方法可以派上用场。类似的东西:
projects
shared\src\MyBundle
project1
project2
etc
编辑projectx \ app \ autoload.php并添加共享包src的路径,以便每个人都可以找到共享代码。类似的东西:
$loader = require __DIR__.'/../vendor/autoload.php';
$loader->add('MyBundle', __DIR__ . '/../../shared/src');
现在,其他项目将自动访问对MyBundle所做的更改。
最终,当共享捆绑包稳定后,您可以将其转换为包并使用composer安装到供应商中。但在开发过程中,这种方法对我很有用。