Composer
We use Composer for managing PHP dependencies, which can include everything from internal tools/libraries to premium WordPress plugins (and even WordPress core itself).
Managing dependencies this way can take some getting used to. But it comes with numerous benefits, including:
- Keeping plugins and themes into source control.
- Avoids us having to use git submodules.
- Let us manage WordPress and non-WordPress project libraries with the same tooling.
Public Packages
Most dependencies can be found on the main Composer package repo, Packagist.
Any WordPress plugin or theme available on wordpress.org can be found on a WordPress-focused package repo, WPackagist, where the package name uses the same "slug" as the wordpress.org listing of the plugin/theme.
If you wanted to use StellarWP's open-source container-contract library, for example, it's available on Packagist:
composer require stellarwp/container-contract
To add the free version of the Yoast SEO plugin, for example:
composer require wpackagist-plugin/wordpress-seo
To add the base Kadence theme:
composer require wpackagist-theme/kadence
Private Packages
We mainly use private GitHub repos for managing private packages. This is a common practice, and Composer has built-in support for this.
We have several Recipes on this topic: