Symfony:如何在不同项目之间重新分发私有包

时间:2017-08-13 18:23:46

标签: git symfony

让我们说symfony项目a在项目的根文件夹中包含一个名为MyCompany/MyBundle的包。

由于这个捆绑包是我所有项目的某种标准软件,我想轻松分享它们并将其复制到项目b,c,......

同步此(私人)捆绑包的最佳方式是什么?

  • 根据需要在项目文件夹之间复制粘贴
  • 使用git和例如github和作曲家*
  • 更好的东西:)
  • ...

* Git / Composer解决方案的问题:这需要两个repos,一个用于项目,一个用于Bundle,但Bundle在项目中。此外,作曲家会将其下载到vendor上的其他项目,而不是根文件夹)

2 个答案:

答案 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安装到供应商中。但在开发过程中,这种方法对我很有用。