Skip to content

In the migrate command, add an initial step to create a Next.js config file (required by open-next) if it doesn't exist#1127

Merged
vicb merged 11 commits intomainfrom
dario/DEVX-2461/create-next-config-in-migrate
Feb 13, 2026
Merged

In the migrate command, add an initial step to create a Next.js config file (required by open-next) if it doesn't exist#1127
vicb merged 11 commits intomainfrom
dario/DEVX-2461/create-next-config-in-migrate

Conversation

@dario-piotrowicz
Copy link
Contributor

@dario-piotrowicz dario-piotrowicz commented Feb 12, 2026

Fixes https://jira.cfdata.org/browse/DEVX-2461


The next config file is generally present in Next.js apps but it's not actually mandatory (for example see: https://github.com/vercel/examples/tree/main/solutions/blog).

In any case open-next does require the file (see: opennextjs/opennextjs-aws#1111), so the changes here improve the migrate command to create this file if not already present (enabling a migration for projects that don't include the file).

…fig file (required by open-next) if it doesn't exist
@changeset-bot
Copy link

changeset-bot bot commented Feb 12, 2026

🦋 Changeset detected

Latest commit: 6d0343a

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@opennextjs/cloudflare Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@pkg-pr-new
Copy link

pkg-pr-new bot commented Feb 12, 2026

Open in StackBlitz

npm i https://pkg.pr.new/@opennextjs/cloudflare@1127

commit: 6d0343a

"Error: This does not appear to be a Next.js application.\n" +
"The 'next' package is not installed and no next.config file was found."
);
process.exit(1);
Copy link
Contributor

Choose a reason for hiding this comment

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

ensureNextConfigExists is a pretty generic name. I would throw here and let the caller decide if they should log the error and/or process.exit. WDYT.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Rgardingprocess.exit, I put it here as that seemed to me the general pattern in the open-next codebase, I'm happy to throw instead and have the caller exit 👍

Copy link
Contributor Author

Choose a reason for hiding this comment

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

ensureNextConfigExists is a pretty generic name

I've updated the name to createNextConfigFileIfMissing I hope this is better?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

In regards to process.exit, what do you think about
75229f9
?

process.exit(1);
}

printStepTitle("Creating next.config.ts");
Copy link
Contributor

Choose a reason for hiding this comment

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

Again I don't think think should be the (single) responsibility of ensureNextConfigExists to do that ?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I've renamed the function createNextConfigFileIfMissing and removed the printStepTitle, does this work for you?

Copy link
Contributor

@vicb vicb left a comment

Choose a reason for hiding this comment

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

Sorry quick review but at least some of the comment should be meaningful

Copy link
Contributor

@vicb vicb left a comment

Choose a reason for hiding this comment

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

Looks great, I think you need to update the usage of ensureNextjsVersionSupported ?

}
);
}
// At this point we're sure the next config exists
Copy link
Contributor

Choose a reason for hiding this comment

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

super nit: we are sure that it has been created... not that it (still) exists. Not asking any change here.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

ok 😄

Anyways I've improved this a bit: 23ea438, is this better? 🙂

Comment on lines +297 to +299
if (!skipNextVersionCheck && !ensureNextjsVersionSupported({ nextVersion })) {
throw new Error(`Next.js version ${nextVersion} is not compatible with OpenNext.`);
}
Copy link
Contributor

Choose a reason for hiding this comment

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

Shouldn't this be just:

Suggested change
if (!skipNextVersionCheck && !ensureNextjsVersionSupported({ nextVersion })) {
throw new Error(`Next.js version ${nextVersion} is not compatible with OpenNext.`);
}
if (!skipNextVersionCheck) {
ensureNextjsVersionSupported({ nextVersion });
}

Copy link
Contributor Author

Choose a reason for hiding this comment

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

of course! 🤦

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Updated: 6d0343a 👍

Copy link
Contributor

@vicb vicb left a comment

Choose a reason for hiding this comment

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

LGTM, thanks Dario!

@vicb vicb merged commit 2b437f1 into main Feb 13, 2026
7 checks passed
@vicb vicb deleted the dario/DEVX-2461/create-next-config-in-migrate branch February 13, 2026 17:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants