Since my blog post about the anatomy of a dope PHP package repository a lot has changed in the PHP ecosystem and it's surrounding tools. Time to reflect these changes and provide, yet another, guide to develop a PHP package in 2025.
Idea to implementation
The
hardest part to get started is finding an idea worth implementing. Sources of inspiration can be visiting conferences, visiting local user groups, or the good old blog post reading. Also, daily business might generate an idea worth investing time. The idea might be very niche at first but that shouldn't stop you from going for it; the learnings might advance your self-confidence and career.
Getting started
Template repositories are a GitHub feature released in June 2019, which allows you and others to generate new Git repositories with the same directory structure and files based on the given template repository. Some templates to look into are
spatie/package-skeleton-php and
ergebnis/php-package-template. If you're developing a dedicated
Laravel package
spatie/package-skeleton-laravel is a good starting point. For checking if a package is PDS conform, there are for one the
command-line tools of the
pds/skeleton project or the
package analyser which is a very
opinionated validator/analyser.
Must have development tools
Some of the above-mentioned package templates come with preconfigured development tools like
PHPUnit or the
PHP Coding Standards Fixer. Other tools you might have to add or switch yourself. For example when you're developing a Laravel package you might want to replace PHPUnit with the traction gaining
Pest testing framework and the PHP Coding Standards Fixer with
Pint. For aiding you in development, tools like
PHPStan and
Rector have become quite mandatory. Also, worth checking out is their thriving extension ecosystem e.g.
Larastan and
rector-laravel.
For the CI part,
GitHub Actions have replaced former CI environments like
Travis CI. So it might be a good invest to look into the usage and definition of GitHub Actions.
The automation of dependency updates for dependant Composer packages can currently be handled via
Dependabot
but might soon be replaced by
Conductor.
Identifying wording or grammar mistakes in repositories might become easier once we can add
Peck,
a wrapper around
GNU Aspell, into the mix.
To practice
Datensparsamkeit you can add the
lean-package-validator, which ensures that
no unnecessary package artifacts end up in the distributed dist archives.
For some additional development tools, it's also worth checking out Tomas Votruba's
tools selection.
Registering your package
After having finished the implementation of the package you need to Git tag it, ideally following
semantic versioning,
and register it at
Packagist, the
main PHP package repository.
Package promotion
To promote your package start with a care- and heartful crafted
README.md file. If you want to rise the visibility of your package invest some time to create a
catching logo or delegate its creation to your bubble. Other channels to promote your work are X, the
awesome PHP list, and giving a presentation about it at your local user group.
No comments:
Post a Comment