mirror of
https://github.com/vercel/next.js.git
synced 2026-09-20 02:25:18 +08:00
1eab3361c7
We've had a longstanding issue where you'd have to run `pnpm i` _twice_ on a fresh checkout because `pnpm` wouldn't set up binary symlinks until after the binary exists, but the binary wouldn't exist until after `pnpm build` was done: https://github.com/vercel/next.js/blob/canary/.github/workflows/build_reusable.yml#L303-L311 This solves that problem using a pnpm preinstall script that creates stub binaries for these files if they don't exist yet (because we haven't run `pnpm build`). ## Test Plan ``` git clean -fxd pnpm i pnpm build pnpm test-start test/e2e/app-dir/next-image/ pnpm test-start-turbo test/e2e/app-dir/next-image/ ``` I tested this both locally and inside of a fresh ubuntu VM. Running `pnpm next` after `pnpm i` but before `pnpm build` gives a helpful error message: <img width="946" height="125" alt="Screenshot 2026-03-06 at 9 37 14 PM" src="https://github.com/user-attachments/assets/4517e8bd-60ca-44f2-a34c-f7f3ec56c634" />
43 lines
883 B
JavaScript
43 lines
883 B
JavaScript
import fs from 'node:fs'
|
|
import path from 'node:path'
|
|
import { fileURLToPath } from 'node:url'
|
|
|
|
const scriptDir = path.dirname(fileURLToPath(import.meta.url))
|
|
const repoRoot = path.join(scriptDir, '..')
|
|
|
|
const placeholders = [
|
|
path.join(repoRoot, 'packages', 'next', 'dist', 'bin', 'next'),
|
|
path.join(repoRoot, 'packages', 'create-next-app', 'dist', 'index.js'),
|
|
path.join(
|
|
repoRoot,
|
|
'turbopack',
|
|
'packages',
|
|
'devlow-bench',
|
|
'dist',
|
|
'cli.js'
|
|
),
|
|
]
|
|
|
|
for (const binPath of placeholders) {
|
|
if (fs.existsSync(binPath)) {
|
|
continue
|
|
}
|
|
|
|
fs.mkdirSync(path.dirname(binPath), { recursive: true })
|
|
|
|
fs.writeFileSync(
|
|
binPath,
|
|
`#!/usr/bin/env node
|
|
console.error(
|
|
"Local workspace has not been built yet. Run 'pnpm build' first."
|
|
)
|
|
process.exit(1)
|
|
`,
|
|
'utf8'
|
|
)
|
|
|
|
if (process.platform !== 'win32') {
|
|
fs.chmodSync(binPath, 0o755)
|
|
}
|
|
}
|