One dependency has no stable release yet, so composer install refuses to resolve it. The answer that comes up first is "minimum-stability": "dev", which fixes that package and quietly lowers the bar for every other package in the tree at the same time.
{
"minimum-stability": "stable",
"prefer-stable": true,
"require": {
"monolog/monolog": "~1.10",
"league/flysystem": "0.5.*@dev",
"internal/feed-parser": "dev-master"
}
}
The @dev suffix is a stability flag on that one constraint, so the exception is written next to the package it applies to and is visible in review. A dev-master requirement carries an implicit flag of its own and needs no suffix. If the global setting has to be lowered anyway — because a transitive dependency demands it — "prefer-stable": true restores sane behaviour by picking the stable release of anything that has one. The flag applies to the root package only: a dependency’s own stability requirements are not inherited, which is why a package requiring a dev version of something else still fails until you name it in your own require.