woocommerce/lib/README.md

32 lines
1.8 KiB
Markdown
Raw Normal View History

## 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.
1. Add package to the `require` section of both the `lib/composer.json` and root `composer.json` file instead of `require-dev`
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`)