Files
openidea/generators/nextjs.toml
T
l0ng-ai 605d5f4985 feat(new-project): project generators for mainstream languages and frameworks (#2689)
File › New Project offers 38 generators grouped by language (Java, Spring Boot, Quarkus, Micronaut, Kotlin, Ktor, Scala, Python/Django/FastAPI/Flask, Node/Vite/Next.js/Nuxt/Angular/SvelteKit/Astro/NestJS/Express, Go, Rust, C/C++, Zig, .NET, PHP/Laravel/Symfony, Ruby/Rails, Dart/Flutter, Swift, Elixir/Phoenix, Haskell, static website, empty). Each is a declaration in generators/<id>.toml run by the new ide-scaffold crate: built-in templates, the framework's official CLI run non-interactively, or a project service zip (Spring Initializr, code.quarkus.io, Micronaut Launch) whose metadata becomes form fields. Projects are built in a staging directory and moved into place only on success. The dialog renders each form from its schema, flags missing toolchains with install hints and streams progress; created projects open trusted. New Project is also on the welcome screen and the title bar project menu.

Closes #709
2026-11-11 17:22:57 +08:00

70 lines
1.5 KiB
TOML

id = "nextjs"
name = "Next.js"
group = "JavaScript"
icon = "project-nextjs"
order = 2
description = "A React app on Next.js from create-next-app."
[[requires]]
program = "node"
min = "20.19"
hint = "Install Node.js 20.19 or later: https://nodejs.org"
[[requires]]
program = "{{pm}}"
when = { pm = ["pnpm", "yarn", "bun"] }
hint = "Install it, or choose npm."
[[fields]]
id = "lang"
label = "Language:"
type = "choice"
segmented = true
options = [{ value = "--ts", label = "TypeScript" }, { value = "--js", label = "JavaScript" }]
default = "--ts"
[[fields]]
id = "pm"
label = "Package manager:"
type = "choice"
segmented = true
options = ["npm", "pnpm", "yarn", "bun"]
default = "npm"
[[fields]]
id = "tailwind"
label = "Tailwind CSS"
type = "checkbox"
default = "true"
[[fields]]
id = "src"
label = "Use a src/ directory"
type = "checkbox"
default = "false"
[[fields]]
id = "install"
label = "Install dependencies"
type = "checkbox"
default = "true"
[[steps]]
label = "Running create-next-app"
package = "create-next-app@latest"
cwd = "parent"
args = [
"{{name}}", "{{lang}}", "--app", "--eslint", "--import-alias", "@/*", "--use-{{pm}}",
"--disable-git", "--skip-install", "--yes",
{ when = { tailwind = "true" }, args = ["--tailwind"] },
{ when = { tailwind = "false" }, args = ["--no-tailwind"] },
{ when = { src = "true" }, args = ["--src-dir"] },
{ when = { src = "false" }, args = ["--no-src-dir"] },
]
[[after]]
label = "Installing dependencies"
program = "{{pm}}"
args = ["install"]
when = { install = "true" }