2020-11-18 21:54:20 +00:00
|
|
|
## WooCommerce Lib Directory
|
|
|
|
|
|
|
|
This directory contains a dummy package responsible for managing WooCommerce dependencies that require conflict avoidance.
|
|
|
|
The contents of the `packages` and `classes` directories get automatically generated by `composer install` and `composer update`.
|
|
|
|
|
|
|
|
This allows us to prefix namespaces and classmap classes to avoid conflicts with plugins that include the same package.
|
|
|
|
All namespaces are prefixed with `Automattic\WooCommerce\Vendor` and classmap classes prefixed with `WC_Vendor_`.
|
|
|
|
|
|
|
|
**_Do not_ make direct changes in the files contained in `packages` or `classes`! Any changes will be lost!**
|
|
|
|
|
|
|
|
### Adding Packages
|
|
|
|
|
|
|
|
In order to avoid including the original dependencies in the root autoloader we must utilize `require-dev` for them.
|
|
|
|
Composer treats `require` dependencies as transitive while `require-dev` dependencies get ignored by consumers.
|
|
|
|
|
|
|
|
1. Add package to `require-dev` section of `composer.json`
|
|
|
|
2. Add package slug to `extra/mozart/packages` section of `composer.json`
|
|
|
|
3. Run `composer run-script build-lib` from the root directory (You should now see the package in `packages/VendorName/PackageName` or `classes`)
|
|
|
|
|
|
|
|
### Updating Packages
|
|
|
|
|
|
|
|
Updating a package is as easy as changing the version in `composer.json` and then running `composer run-script build-lib` from the root directory.
|
|
|
|
|
|
|
|
### Ignoring Packages
|
|
|
|
|
|
|
|
If you would like to add a package which does not undergo conflict avoidance you must take steps to ensure it appears in
|
|
|
|
the root autoloader.
|
|
|
|
|
2020-11-18 23:31:54 +00:00
|
|
|
1. Add package to the `require` section of both the `lib/composer.json` and root `composer.json` file instead of `require-dev`
|
2020-11-18 21:54:20 +00:00
|
|
|
2. Add package slug to `extra/mozart/excluded-packages` section of `composer.json`
|
|
|
|
3. Run `composer run-script build-lib` from the root directory (You **should not** see the package in `packages/VendorName/PackageName` or `classes`)
|