Modern Skeleton for starting Sylius plugins.
This plugin DOES NOT follow standard Sylius directory structure for plugins but a new "Symfony standard skeleton" one and services declaration in PHP (Symfony is actually leaving xml for PHP).
New directory structure:
├── assets
├── bin
├── config
├── docs
├── etc
├── features
├── public
├── src
├── templates
├── tests
└── translations
Informations:
- Related pull request on github (Symfony): symfony/symfony#32845
- Document for Symfony Bundle: https://github.com/yceruto/acme-bundle
-
Run
composer create-project pocky/modern-plugin-skeleton ProjectName dev-main
or clone this project -
From the plugin skeleton root directory, run the following commands:
$ chmod -Rf 777 tests/Application/var
$ docker compose up -d
$ docker compose exec php php -d memory_limit=-1 /usr/bin/composer install
$ docker compose exec nodejs yarn --cwd tests/Application install
$ docker compose exec php tests/Application/bin/console doctrine:database:create --if-not-exists -vvv
$ docker compose exec php tests/Application/bin/console doctrine:schema:create -vvv
$ docker compose exec php tests/Application/bin/console assets:install tests/Application/public -vvv
$ docker compose exec nodejs yarn --cwd tests/Application build
$ docker compose exec php tests/Application/bin/console cache:warmup -vvv
$ docker compose exec php tests/Application/bin/console sylius:fixtures:load -n
$ docker compose exec php composer validate --ansi --strict
$ docker compose exec php vendor/bin/phpstan analyse -c phpstan.neon -l max src/
$ docker compose exec php vendor/bin/psalm
$ docker compose exec php vendor/bin/phpspec run --ansi -f progress --no-interaction
$ docker compose exec php vendor/bin/phpunit --colors=always
$ docker compose exec php vendor/bin/behat --profile docker --colors --strict -vvv --no-interaction
ProTip use Makefile
;)
For a comprehensive guide on Sylius Plugins development please go to Sylius documentation, there you will find the Plugin Development Guide, that is full of examples.
-
Run
composer create-project pocky/modern-plugin-skeleton ProjectName
. -
From the plugin skeleton root directory, run the following commands:
$ (cd tests/Application && yarn install) $ (cd tests/Application && yarn build) $ (cd tests/Application && APP_ENV=test bin/console assets:install public) $ (cd tests/Application && APP_ENV=test bin/console doctrine:database:create) $ (cd tests/Application && APP_ENV=test bin/console doctrine:schema:create)
To be able to setup a plugin's database, remember to configure you database credentials in tests/Application/.env
and tests/Application/.env.test
.
-
PHPUnit
vendor/bin/phpunit
-
PHPSpec
vendor/bin/phpspec run
-
Behat (non-JS scenarios)
vendor/bin/behat --strict --tags="~@javascript"
-
Behat (JS scenarios)
-
Start Headless Chrome:
google-chrome-stable --enable-automation --disable-background-networking --no-default-browser-check --no-first-run --disable-popup-blocking --disable-default-apps --allow-insecure-localhost --disable-translate --disable-extensions --no-sandbox --enable-features=Metal --headless --remote-debugging-port=9222 --window-size=2880,1800 --proxy-server='direct://' --proxy-bypass-list='*' http://127.0.0.1
- Install SSL certificates (only once needed) and run test application's webserver on
127.0.0.1:8080
:
symfony server:ca:install APP_ENV=test symfony server:start --port=8080 --dir=tests/Application/public --daemon
- Run Behat:
vendor/bin/behat --strict --tags="@javascript"
-
Static Analysis
-
Psalm
vendor/bin/psalm
-
PHPStan
vendor/bin/phpstan analyse -c phpstan.neon -l max src/
-
-
Coding Standard
vendor/bin/ecs check src
-
Using
test
environment:(cd tests/Application && APP_ENV=test bin/console sylius:fixtures:load) (cd tests/Application && APP_ENV=test bin/console server:run -d public)
-
Using
dev
environment:(cd tests/Application && APP_ENV=dev bin/console sylius:fixtures:load) (cd tests/Application && APP_ENV=dev bin/console server:run -d public)