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