Add require-tools section and handle scoped vendor dirs
This issue is a follow up of https://github.com/composer/composer/issues/5390#issuecomment-463625428 Composer has become the primary installation method of libraries and is so good at it that it is pretty commonplace nowadays to also install tools like static analyzers or testing frameworks with it. But this comes at a price: tools are micro-applications with a lot of dependencies, and those dependencies can often be found in your application, or in other tools. Every time you add one of them to your toolchain, your application becomes more constrained, and very often, for no good reason, because in most cases, you do not reference classes or interfaces from those tools in your code. Soon enough, you find yourself in the dependency hell Composer is supposed to protect you from. I'm dreaming of a new section in our `composer.json` files, called `require-tools`, that would be aimed at solving this issue by letting you install one or several tools inside separate vendor dirs, so that: 1. Tools have zero influence on each other. 2. Tools have zero influence on the dependencies of your project, meaning you will always be able to upgrade your project's dependencies, 3. In the case your tool has dependencies in common with your project, the tool will take your project's constraints into account. 4. Tools packages might have a flag to opt-out of the above, so that if they never load the application code they can avoid being constrained by the application's dependencies.
Posted by nicolas-grekas on Jan 21, 2021, 6:24 PM
Tags
Related issues
- >Beef is already too expensive for most people.
- I gave this a go a couple of years ago.
- I haven't seen any use cases around me, although I'm not that advanced user.
- [BUG] Pro Max 5x Quota Exhausted in 1.5 Hours Despite Moderate Usage
- > Unfortunately it doesn't offer free hosting for hobbyists.
- Still the same HID remapping project from last month (I was hoping to be done by now, but hardware is hard): https://github.co...
Raise real-world problems, find people facing the same issue, and discuss solutions.3,000 issues0 comments
pricing (Software)
>Beef is already too expensive for most people.
I gave this a go a couple of years ago.
I haven't seen any use cases around me, although I'm not that advanced user.
[BUG] Pro Max 5x Quota Exhausted in 1.5 Hours Despite Moderate Usage
> Unfortunately it doesn't offer free hosting for hobbyists.
Still the same HID remapping project from last month (I was hoping to be done by now, but hardware is hard): https://github.co...
This criticism seems like a complete non-sequitur to me.
Bring back the GitHub Copilot in the CLI commands to not break workflows
Add require-tools section and handle scoped vendor dirs
This issue is a follow up of https://github.com/composer/composer/issues/5390#issuecomment-463625428 Composer has become the primary installation method of libraries and is so good at it that it is pretty commonplace nowadays to also install tools like static analyzers or testing frameworks with it. But this comes at a price: tools are micro-applications with a lot of dependencies, and those dependencies can often be found in your application, or in other tools. Every time you add one of them to your toolchain, your application becomes more constrained, and very often, for no good reason, because in most cases, you do not reference classes or interfaces from those tools in your code. Soon enough, you find yourself in the dependency hell Composer is supposed to protect you from. I'm dreaming of a new section in our `composer.json` files, called `require-tools`, that would be aimed at solving this issue by letting you install one or several tools inside separate vendor dirs, so that: 1. Tools have zero influence on each other. 2. Tools have zero influence on the dependencies of your project, meaning you will always be able to upgrade your project's dependencies, 3. In the case your tool has dependencies in common with your project, the tool will take your project's constraints into account. 4. Tools packages might have a flag to opt-out of the above, so that if they never load the application code they can avoid being constrained by the application's dependencies.
Comments (0)
No comments yet. Start the discussion.