You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Jan 20, 2022. It is now read-only.
Discovered an interesting issue with the following dependency set:
```json
{
"devDependencies": {
"webpack-dev-server": "^3.11.0",
"@pmmmwh/react-refresh-webpack-plugin": "^0.4.3"
}
}
```
`webpack-dev-server` here has a peerDependency on webpack v4. But, the
dependencies of `@pmmmwh/react-refresh-webpack-plugin` have peer
dependencies on webpack at `4 || 5`.
So, a resolution _should_ be possible. Since the
`@pmmmwh/react-refresh-webpack-plugin` package is alphabetically first,
it loads its deps, and ends up placing webpack@5 to satisfy the dep with
the latest and greatest. Then when `webpack-dev-server` gets to its
eventual peer dep on webpack, it can't replace it, because `webpack@5`
has a dependency on `terser-webpack-plugin@^5.0.3`, which in turn has a
peer dependency on `[email protected]`.
When we check to see if webpack 5 can be replaced, we find it has a
dependent, and reject the replacement. But that dependent is only
present as a dependency of the thing being replaced, so should not be
considered.
Second, while the source of the `terser-webpack-plugin` is `webpack`, it
cannot be installed there, because it has peer deps that are also peer
deps of webpack. So, we _must_ place it in the root node_modules, but
were not attempting the "source" location overrides, because the root is
not the source. This was a second issue resulting in `ERESOLVE` errors
even when `--force` was applied, with this dependency set:
```json
{
"devDependencies": {
"webpack-dev-server": "^3.11.0",
"webpack": "^5.0.0"
}
}
```
Fixes: #180Fixes: npm/cli#2123
0 commit comments