Skip to content

Commit 1897968

Browse files
committed
perf(dev): warm a single fork by default, overridable with NUXT_DEV_FORK_POOL_SIZE
1 parent 9a10f71 commit 1897968

3 files changed

Lines changed: 22 additions & 2 deletions

File tree

packages/nuxt-cli/src/commands/dev.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ const command = defineCommand({
171171

172172
const pool = new ForkPool({
173173
rawArgs: ctx.rawArgs,
174-
poolSize: 2,
174+
poolSize: resolveForkPoolSize(),
175175
listenOverrides,
176176
inspect,
177177
})
@@ -276,6 +276,19 @@ function setupSignalHandlers(close: () => Promise<void>): void {
276276
}
277277
}
278278

279+
function resolveForkPoolSize(): number | undefined {
280+
const raw = process.env.NUXT_DEV_FORK_POOL_SIZE
281+
if (!raw) {
282+
return undefined
283+
}
284+
const parsed = Number(raw)
285+
if (!Number.isInteger(parsed) || parsed < 0) {
286+
logger.warn(`Ignoring invalid \`NUXT_DEV_FORK_POOL_SIZE=${raw}\`; expected a non-negative integer.`)
287+
return undefined
288+
}
289+
return parsed
290+
}
291+
279292
function parsePositiveInteger(value: string | undefined): number | undefined {
280293
const parsed = Number(value)
281294
if (!value || !Number.isInteger(parsed) || parsed <= 0) {

packages/nuxt-cli/src/dev/pool.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ export class ForkPool {
3030

3131
constructor(options: ForkPoolOptions) {
3232
this.rawArgs = options.rawArgs
33-
this.poolSize = options.poolSize ?? 2
33+
this.poolSize = options.poolSize ?? 1
3434
this.listenOverrides = options.listenOverrides
3535
this.inspect = options.inspect
3636

packages/nuxt-cli/test/unit/fork-pool.spec.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,13 @@ afterEach(async () => {
2828
})
2929

3030
describe('forkPool', () => {
31+
it('should warm a single fork by default', { timeout: 30_000 }, async () => {
32+
const pool = createPool()
33+
pool.startWarming()
34+
await waitForReady(pool, 1)
35+
expect(pool.getStats().total).toBe(1)
36+
})
37+
3138
it('should kill every fork on shutdown', { timeout: 30_000 }, async () => {
3239
const pool = createPool(3)
3340
pool.startWarming()

0 commit comments

Comments
 (0)