Symfony2-создание собственного пакета вендоров - проект и стратегия git
мы рассматриваем возможность создания нашего собственного common
пакет для сопоставления сущностей и сервисов для использования в нескольких отдельных приложениях. Пакет должен быть легко модифицировать, запускать, включать и тестировать. Я знаю о лучшие практики для структурирования пакетов, но я не знаю, что git
стратегия для использования, когда речь заходит о развитии.
должны ли мы создать common
bundle в целом проект и зафиксировать весь репозиторий на нашем сервере git, или лучше начать управление версиями только для корень из common
связывать и толкать только его содержимое? Я вижу этот подход в пакетах, доступных на github
, но я не знаю простой и удобный способ разработки Пучков таким образом.
3 ответа:
создать новый пустой проект 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/
введите свой репозиторий github в
src/Company/DemoBundle
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
добавить композитор.файл 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" } } }
теперь у вас есть базовая структура вашего пакета
используйте его в другом проект
композитор.json:
[...] "require" : { [...] "company/demobundle" : "dev-master" }, "repositories" : [{ "type" : "vcs", "url" : "https://github.com/Company/DemoBundle.git" }], [...]
Do:
curl -sS https://getcomposer.org/installer | php php composer.phar update company/demobundle
app / AppKernel:
new Company\DemoBundle\CompanyDemoBundle(),
работы на
- вы можете клонировать свой дембель в
src/Company
папка, а затем вручную установить его- вы можете использовать ссылку
вывод
вы можете разработать и протестировать свой пакет в своем первом проекте и использовать его с github и composer во втором проекте.
важно знать, что вы можете зафиксировать в своем РЕПО от /поставщика. Действительно, composer создает второй пульт дистанционного управления под названием "composer" для каждого пакета (или пакета), который ссылается на репо пакета, чтобы вы могли работать над ним в рабочем контексте. Поэтому хорошей практикой является регистрация вашего пакета в вашем композиторе.json для всех ваших проектов и фиксации от вашего
/vendor/MyCompany/MyBundle
, из любого проекта.в качестве доказательства, просто запустите
git remote -v
любой узел торговец.плохой практикой было бы рассматривать ваш пакет как отдельный проект и иметь с ним символические ссылки. Основная причина, по которой это плохая практика, заключается в том, что вы не сможете объявить зависимости с вашим пакетом. Кроме того, вы будете иметь некоторые трудности с размещением ваших проектов.
В Symfony4,
generate:bundle
команда больше не доступна. Вместо этого, вы можете следовать в этом уроке.сначала создайте проект с помощью:
composer create-project symfony/website-skeleton my-project
затем создайте :
"autoload": { "psr-4": { "Acme\AcmeFooBundle\": "lib/AcmeFooBundle/src/", } },
и работать
composer dump-autoload
.теперь вам нужно только добавить свой класс bundle в
config/bundles.php
:return [ ... Acme\AcmeFooBundle\AcmeFooBundle::class => ['all' => true], ];
и инъекция зависимостей для загрузки конфигурации из вашего пакета.
если вы хотите проверить свои службы перед добавлением инъекции зависимостей, вы можете просто автоматически подключить их по адресу
config/services.yml
:services: ... Acme\AcmeFooBundle\Services\Foo: ~
вот и все. Следуйте лучшие практики и продолжайте кодировать.
PS: я опубликовал сообщение с несколько советов по разработке многоразовых пакетов Symfony.