-
Notifications
You must be signed in to change notification settings - Fork 18
Conversation
This PR introduces PHIVE to manage PHPUnit. For more information on PHIVE, please refer to the official website.
Instead of including PHPUnit as a Composer (dev) dependency, we would run phive install, and have PHPUnit (symlinked) available at tools/phpunit inside our project root.
Not having PHPUnit as a Composer dependency would mean that, in addition to PHPUnit itself, also all these packages are no longer installed:
Package operations: 0 installs, 0 updates, 26 removals
- Removing webmozart/assert (1.9.1)
- Removing symfony/yaml (v4.4.19)
- Removing symfony/polyfill-ctype (v1.22.0)
- Removing sebastian/version (2.0.1)
- Removing sebastian/resource-operations (1.0.0)
- Removing sebastian/recursion-context (2.0.0)
- Removing sebastian/object-enumerator (2.0.1)
- Removing sebastian/global-state (1.1.1)
- Removing sebastian/exporter (2.0.0)
- Removing sebastian/environment (2.0.0)
- Removing sebastian/diff (1.4.3)
- Removing sebastian/comparator (1.2.4)
- Removing sebastian/code-unit-reverse-lookup (1.0.2)
- Removing phpunit/phpunit-mock-objects (3.4.4)
- Removing phpunit/phpunit (5.7.27)
- Removing phpunit/php-token-stream (2.0.2)
- Removing phpunit/php-timer (1.0.9)
- Removing phpunit/php-text-template (1.2.1)
- Removing phpunit/php-file-iterator (1.4.5)
- Removing phpunit/php-code-coverage (4.0.8)
- Removing phpspec/prophecy (v1.10.3)
- Removing phpdocumentor/type-resolver (1.4.0)
- Removing phpdocumentor/reflection-docblock (5.2.2)
- Removing phpdocumentor/reflection-common (2.2.0)
- Removing myclabs/deep-copy (1.10.2)
- Removing doctrine/instantiator (1.4.0)
This means a 11M smaller vendor folder (14M vs. 25M).
I'll leave this PR here for discussion.
|
It looks super cool, but I am wondering if the 11M vendor folder is worth the extra tool? My head says yes, but I want to make sure it is. Is one of the upside with composer is that it's all together. |
The reduced size is more a side effect, to be honest. It's about clear separation between production and development dependencies of the software being developed and the software you need as a developer. For example, coding standards would live in This separation prevents running into issues that are no real issues, such as dependency conflicts. |
My bad, i totally missed that point in your post |
|
Adding another tool to install tools doesn't excite me to be honest, we have 2 right now:
Having to manage another would add:
I also like that dependabot can automate these dependency updates e.g here, it appears Phive is not supported by dependapot. I guess my question is, is reducing the /vendor folder size by ~11M instead of automated dependency updates worth it? |
Well yes. That's because they are all for different things. And to be fair, you could easily use a build or install script such
Yeah, automatically checking dependencies for updates or issues would be nice.
It's not primarily about the reduced size, as I mentioned in my last comment. Quoting from the post I wrote:
|