diff --git a/package.json b/package.json
index 9660e457a1ce555..ffe1716f1b2a81b 100644
--- a/package.json
+++ b/package.json
@@ -98,6 +98,7 @@
"npm-run-all": "4.1.5",
"nprogress": "0.2.0",
"pixrem": "5.0.0",
+ "pnpm": "5.8.0",
"postcss-nested": "4.2.1",
"postcss-pseudoelements": "5.0.0",
"postcss-short-size": "4.0.0",
diff --git a/packages/next/build/webpack-config.ts b/packages/next/build/webpack-config.ts
index 1f84a286ee41be9..fdfd07ffe49c297 100644
--- a/packages/next/build/webpack-config.ts
+++ b/packages/next/build/webpack-config.ts
@@ -1,7 +1,7 @@
import { codeFrameColumns } from '@babel/code-frame'
import ReactRefreshWebpackPlugin from '@next/react-refresh-utils/ReactRefreshWebpackPlugin'
import crypto from 'crypto'
-import { readFileSync } from 'fs'
+import { readFileSync, realpathSync } from 'fs'
import chalk from 'next/dist/compiled/chalk'
import semver from 'next/dist/compiled/semver'
import TerserPlugin from 'next/dist/compiled/terser-webpack-plugin'
@@ -685,7 +685,12 @@ export default async function getBaseWebpackConfig(
// Same as above: if the package, when required from the root,
// would be different from what the real resolution would use, we
// cannot externalize it.
- if (baseRes !== res) {
+ if (
+ !baseRes ||
+ (baseRes !== res &&
+ // if res and baseRes are symlinks they could point to the the same file
+ realpathSync(baseRes) !== realpathSync(res))
+ ) {
return callback()
}
}
diff --git a/test/package-managers-tests/basic-pnpm/pages/about.js b/test/package-managers-tests/basic-pnpm/pages/about.js
new file mode 100644
index 000000000000000..46817af02a5c141
--- /dev/null
+++ b/test/package-managers-tests/basic-pnpm/pages/about.js
@@ -0,0 +1,3 @@
+export default function About() {
+ return
About us
+}
diff --git a/test/package-managers-tests/basic-pnpm/pages/about2.js b/test/package-managers-tests/basic-pnpm/pages/about2.js
new file mode 100644
index 000000000000000..2b8fe3f38cba603
--- /dev/null
+++ b/test/package-managers-tests/basic-pnpm/pages/about2.js
@@ -0,0 +1,3 @@
+export default function About2() {
+ return
About 2
+}
diff --git a/test/package-managers-tests/basic-pnpm/pages/day/index.js b/test/package-managers-tests/basic-pnpm/pages/day/index.js
new file mode 100644
index 000000000000000..a3cd64f29174d13
--- /dev/null
+++ b/test/package-managers-tests/basic-pnpm/pages/day/index.js
@@ -0,0 +1,3 @@
+export default function Day() {
+ return
Hello Day
+}
diff --git a/test/package-managers-tests/basic-pnpm/pages/index.js b/test/package-managers-tests/basic-pnpm/pages/index.js
new file mode 100644
index 000000000000000..7bb25eccba89ef5
--- /dev/null
+++ b/test/package-managers-tests/basic-pnpm/pages/index.js
@@ -0,0 +1,11 @@
+import Link from 'next/link'
+export default function Home() {
+ return (
+