MCPcopy
hub / github.com/vercel/next.js / suggestTurbopack

Function suggestTurbopack

packages/next-codemod/bin/upgrade.ts:486–557  ·  view source on GitHub ↗
(
  packageJson: any,
  targetNextVersion: string
)

Source from the content-addressed store, hash-verified

484 * showing the current dev command as the initial value.
485 */
486async function suggestTurbopack(
487 packageJson: any,
488 targetNextVersion: string
489): Promise<void> {
490 const devScript: string | undefined = packageJson.scripts?.['dev']
491 // Turbopack flag was changed from `--turbo` to `--turbopack` in v15.0.1-canary.3
492 // PR: https://github.com/vercel/next.js/pull/71657
493 // Release: https://github.com/vercel/next.js/releases/tag/v15.0.1-canary.3
494 const isAfterTurbopackFlagChange =
495 compareVersions(targetNextVersion, '15.0.1-canary.3') >= 0
496 const turboPackFlag = isAfterTurbopackFlagChange ? '--turbopack' : '--turbo'
497
498 if (!devScript) {
499 console.log(
500 `${pc.yellow('⚠')} No "dev" script found in your package.json. Skipping Turbopack suggestion.`
501 )
502 return
503 }
504
505 if (devScript.includes('next dev')) {
506 // covers "--turbopack" as well
507 if (devScript.includes('--turbo')) {
508 if (isAfterTurbopackFlagChange && !devScript.includes('--turbopack')) {
509 console.log() // new line
510 console.log(
511 `${pc.green('✔')} Replaced "--turbo" with "--turbopack" in your dev script.`
512 )
513 console.log() // new line
514 packageJson.scripts['dev'] = devScript.replace('--turbo', '--turbopack')
515 return
516 }
517 return
518 }
519
520 const responseTurbopack = await prompts(
521 {
522 type: 'confirm',
523 name: 'enable',
524 message: `Enable Turbopack for ${pc.bold('next dev')}?`,
525 initial: true,
526 },
527 { onCancel }
528 )
529
530 if (!responseTurbopack.enable) {
531 return
532 }
533
534 packageJson.scripts['dev'] = devScript.replace(
535 'next dev',
536 `next dev ${turboPackFlag}`
537 )
538 return
539 }
540
541 console.log(
542 `${pc.yellow('⚠')} Could not find "${pc.bold('next dev')}" in your dev script.`
543 )

Callers 1

runUpgradeFunction · 0.85

Calls 4

compareVersionsFunction · 0.85
includesMethod · 0.80
replaceMethod · 0.65
logMethod · 0.45

Tested by

no test coverage detected