Normally when starting a new PHP project you'd just copy/paste configuration files from another project in order to set the project environment ready as quickly as possible, but you'll forget to copy some files and more often than not you'll forget to change names or routes on those files.
Scaffolding project environments with the same files once and again is painfully boring, error prone, and leaves a feeling of time waste.
Let Yeoman do the heavy lifting and get your projects scaffold and ready to start developing in a breeze with this generator, it will prepare a shiny and clean PHP project structure ready to develop for you, sit and focus on the actual code.
- Project complies with pds/skeleton directory structure
- Load existing configuration from composer.json
- Git use is assumed by default (.gitignore and .gitattributes included)
- Integration with Github and Bitbucket accounts
- Composer ready (global/local detection, or local installation)
- Project ready to be added to Packagist
- Select minimum supported PHP version (from 5.6 up)
- Symfony polyfills compatibility packages included based on minimum supported PHP version
- Editorconfig definitions file
- Development environment integration
- Docker integration (with docker-compose)
- Laravel Homestead (Vagrant) integration (optionally with PhpMyAdmin)
- Integration with Vagrant hostupdater plugin if installed
- QA utilities configured and integrated into Composer scripts and Travis build
- PHP syntax linting
- PHPUnit testing environment
- Infection mutation testing framework
- PHPCS for PSR2 coding standard checking
- PHP-CS-Fixer for automatically fixing coding style
- PHPMD for code smell detection
- PHPMND for magic code detection
- PHPCPD for copy/paste detection
- PHPStan for static analysis of the code
- Composer outdated for packages updates availability check
- External tools
- Already configured Travis CI integration (PHP >=5.6, and nightly)
- Coveralls integration (triggered by Travis build)
- Scrutinizer integration
- StyleCI integration
- Initial documentation structure in Markdown
- Basic annotated kickoff code (with tests and coverage report!)
- Common SPDX FOSS license selection
- Apache-2.0
- BSD-2-Clause
- BSD-3-Clause
- BSD-4-Clause
- GPL-3.0
- LGPL-3.0
- MIT (default)
Would you like to see a tool, library, configuration, ... added to the generator? file an issue with your feature request
As the list options and tools configured is quite long a quick/fast mode has been introduced. In fast mode only the basic questions will be asked and then the generator will do its best guessing the rest for you to get the environment ready faster.
npm install -g generator-barephp
Once the generator and dependencies are installed you can start using it by calling Yeoman
yo barephp
barephp
generator comes with many pre-configured tools and services ready to be used, anyway some of them need extra setup once generator has finished:
- Packagist: your package must be submitted to be available
- Travis CI: you need to activate the project repository in your profile page
- Coveralls: the project repository needs to be activated
- Scrutinizer: rhe repository has to be added to Scrutinizer
- StyleCI: enable the repo on your account, then update StyleCI badge's repository code on README.md file.
If you install Laravel Homestead then nginx will be automatically configured to serve your project from http://project-name
.app url.
If you installed PhpMyAdmin within Laravel Homestead it will be available at http://phpmyadmin-`project-name`.app url.
VirtualBox constraints hostname to only contain letters, numbers, hyphens and dots and so nginx has been configure to serve with those names for consistency
If you have Vagrant hostupdater plugin installed then host's /etc/hosts
will be automatically updated every time you start/stop Vagrant (sudo privileges needed), otherwise you should configure hosts file manually.
Found a bug or have a feature request? Please open a new issue. Have a look at existing issues before.
See file CONTRIBUTING.md
See file LICENSE included with the source code for a copy of the license terms.