Symfony2 – 创build自己的供应商捆绑 – 项目和git策略

我们正在考虑创build我们自己的common包,用于实体映射和服务,以在几个单独的应用程序中使 捆绑应该很容易修改,运行,包含和testing。 我知道构buildBundles的最佳实践 ,但我不知道在开发过程中使用什么git策略。

我们是否应该将整个项目作为一个整体来创build,并将整个存储库提交给我们的git服务器,还是仅仅为common包的根目录启动源代码pipe理,并只推送其内容? 我在github上看到了这种捆绑方式,但我不知道如何轻松而舒适地开发捆绑包。

创build一个新的空symfony项目

 php composer.phar create-project symfony/framework-standard-edition demo/ 2.4.1 cd demo 

生成一个新的包

(例如src/Company/DemoBundle

 php app/console generate:bundle cd src/Company/DemoBundle/ 

src/Company/DemoBundle初始化你的github仓库

 git init touch README.md git add . git commit -m "initial commit" git remote add origin https://github.com/YourAccount/DemoBundle.git git push -u origin master 

添加一个composer.json文件

src/Company/DemoBundle/composer.json

 { "name" : "company/demobundle", "description" : "A demo bundle", "type" : "symfony-bundle", "authors" : [{ "name" : "demo", "email" : "demo@company.com" }], "keywords" : [ "demo bundle" ], "license" : [ "MIT" ], "require" : { }, "autoload" : { "psr-0" : { "Company\\DemoBundle" : "" } }, "target-dir" : "Company/DemoBundle", "repositories" : [{ }], "extra" : { "branch-alias" : { "dev-master" : "some_version-dev" } } } 

现在你有你的包的基础结构

在另一个项目中使用它

composer.json:

  [...] "require" : { [...] "company/demobundle" : "dev-master" }, "repositories" : [{ "type" : "vcs", "url" : "https://github.com/Company/DemoBundle.git" }], [...] 

做:

 curl -sS https://getcomposer.org/installer | php php composer.phar update company/demobundle 

应用程序/ AppKernel:

 new Company\DemoBundle\CompanyDemoBundle(), 

在…上下功夫

  • 你可以将你的DemoBundle复制到src/Company文件夹中,然后手动安装它
  • 你可以使用符号链接

结论

您可以在第一个项目中开发和testing您的包,并在第二个项目中将它与github和composer一起使用。

要知道的一个重点是,你可以从/供应商进入你的回购。 事实上,composer php为每个引用软件包回购的软件包(或软件包)创build了另一个名为“composer”的远程程序,以便在工作环境中对其进行处理。 所以最好的做法是在composer.json中注册所有项目的包,并从任何项目的/vendor/MyCompany/MyBundle提交。

作为一个certificate,只需从供应商的任何包中运行git remote -v

不好的做法是把你的软件包看作是一个单独的项目,并且与它有符号链接。 这是不好的做法的主要原因是,你将无法声明你的捆绑依赖。 此外,您的项目部署会遇到一些困难。