Makefile Modules for Symfony Projects
This repository contains re-usable make file commands that should work as aliased for a project maintained by "Team Mate Pro" software company.
All projects should follow internal conventions.
Installation
Via Composer (for PHP/Symfony projects)
composer require --dev team-mate-pro/makeThe installation will automatically:
- Copy the reference
Makefileto your project root if one doesn't exist - Create/update
Makefile.exampleif aMakefilealready exists
Then customize your Makefile and include the desired modules:
# Define mandatory variables
docker-compose=docker compose
main-container-name=app
# Include desired modules from vendor
include vendor/team-mate-pro/make/git/MAKE_GIT_v1
include vendor/team-mate-pro/make/docker/MAKE_DOCKER_v1
include vendor/team-mate-pro/make/sf-7/MAKE_SYMFONY_v1
include vendor/team-mate-pro/make/phpcs/MAKE_PHPCS_v1
include vendor/team-mate-pro/make/phpunit/MAKE_PHPUNIT_v1
include vendor/team-mate-pro/make/phpstan/MAKE_PHPSTAN_v1
include vendor/team-mate-pro/make/nuxt-3/MAKE_NUXT_v1
include vendor/team-mate-pro/make/nuxt-3/MAKE_NUXT_TESTS_v1
include vendor/team-mate-pro/make/nuxt-3/MAKE_NUXT_QA_v1
include vendor/team-mate-pro/make/npm/MAKE_NPM_REGISTRY_v1
include vendor/team-mate-pro/make/npm/MAKE_NPM_DEPS_v1
include vendor/team-mate-pro/make/claude/MAKE_CLAUDE_v1Via npm (for Node.js/Nuxt projects)
npm install --save-dev @team-mate-pro/makeOr with yarn:
yarn add -D @team-mate-pro/makeThe installation will automatically:
- Copy the reference
Makefileto your project root if one doesn't exist - Create/update
Makefile.exampleif aMakefilealready exists
Then customize your Makefile and include the desired modules:
# Define mandatory variables
docker-compose=docker compose
main-container-name=app
# Include desired modules from node_modules
include node_modules/@team-mate-pro/make/git/MAKE_GIT_v1
include node_modules/@team-mate-pro/make/docker/MAKE_DOCKER_v1
include node_modules/@team-mate-pro/make/sf-7/MAKE_SYMFONY_v1
include node_modules/@team-mate-pro/make/phpcs/MAKE_PHPCS_v1
include node_modules/@team-mate-pro/make/phpunit/MAKE_PHPUNIT_v1
include node_modules/@team-mate-pro/make/phpstan/MAKE_PHPSTAN_v1
include node_modules/@team-mate-pro/make/nuxt-3/MAKE_NUXT_v1
include node_modules/@team-mate-pro/make/nuxt-3/MAKE_NUXT_TESTS_v1
include node_modules/@team-mate-pro/make/nuxt-3/MAKE_NUXT_QA_v1
include node_modules/@team-mate-pro/make/npm/MAKE_NPM_REGISTRY_v1
include node_modules/@team-mate-pro/make/npm/MAKE_NPM_DEPS_v1
include node_modules/@team-mate-pro/make/claude/MAKE_CLAUDE_v1Available Modules
Backend (PHP/Symfony)
- git/ - Git workflow commands
- docker/ - Docker and Docker Compose commands
- sf-7/ - Symfony 7 specific commands
- phpcs/ - PHP CodeSniffer commands
- phpunit/ - PHPUnit testing commands
- phpstan/ - PHPStan static analysis commands
Frontend (JavaScript/Vue)
- nuxt-3/ - Nuxt 3 development, testing, and QA commands
NPM & Package Management
- npm/ - NPM registry operations (publishing, versioning) and dependency management
Conventions
1. Docker
All projects must be run using docker and docker compose. Main container should be named app.
2. Each project must have Makefile that defines mandatory variables
## --- Mandatory variables ---
docker-compose=docker compose
main-container-name=app
# ...
## --- Mandatory aliases ---
start: ### Full start and rebuild of the container
echo "./tools/dev/start.sh"
fast: ### Fast start already built containers
echo "./tools/dev/fast.sh"
stop: ### Stop all existing containers
echo "./tools/dev/fast.sh"
check: ### [c] Should run all mandatory checks that run in CI and CD process
echo "alias to makefile for example: make check: phpstan phpcs etc"
check_fast: ### [cf] Should run all mandatory checks that run in CI and CD process skiping heavy ones like functional tests
echo "alias to makefile for example: make check: phpstan phpcs etc"
fix: ### [f] Should run auto fix checks that run in CI and CD process
echo "alias to makefile for example: make check: phpcs_fix"Docker tools
Each project should have tools/{env}/ directory that contains mandatory and re-usable component for defined
environments. Sample output:
tools/
├── dev
│ ├── check.sh
│ ├── init-s3.sh
│ ├── fast.sh
│ ├── start.sh
│ └── stop.sh
├── prod
│ ├── post_deploy.sh
│ └── sync_permissions.sh
├── qa
│ └── git-checker.sh
└── test
├── application-tests-coverage.sh
└── test.sh