Skip to content
This repository has been archived by the owner on Jan 20, 2022. It is now read-only.

Isaacs/test fixture symlink cleanup #183

Closed
wants to merge 3 commits into from

Conversation

isaacs
Copy link
Contributor

@isaacs isaacs commented Nov 12, 2020

based on #182, land that first.

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 `webpack@5.4.0`.

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: #180
Fixes: npm/cli#2123
This also throws if any symlinks are found in the fixture dir after the
test suite runs, since that causes such havoc on Windows machines.
@isaacs isaacs requested a review from nlf November 12, 2020 22:56
Copy link
Contributor

@nlf nlf left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 super helpful tweaks

isaacs added a commit that referenced this pull request Nov 13, 2020
This also throws if any symlinks are found in the fixture dir after the
test suite runs, since that causes such havoc on Windows machines.

PR-URL: https://github.com/pull/183
Credit: @isaacs
Close: #183
Reviewed-by: @darcyclarke
@wraithgar wraithgar deleted the isaacs/test-fixture-symlink-cleanup branch April 22, 2021 17:44
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants