Next.js CLI 允许您开发、构建、启动应用程序等功能。
基本用法:
npx next [command] [options]以下选项可用:
| 选项 | 描述 |
|---|---|
-h 或 --help | 显示所有可用选项 |
-v 或 --version | 输出 Next.js 版本号 |
以下命令可用:
| 命令 | 描述 |
|---|---|
dev | 以开发模式启动 Next.js,支持热模块重载、错误报告等。 |
build | 创建应用程序的优化生产构建。显示每个路由的信息。 |
start | 以生产模式启动 Next.js。应用程序应首先使用 next build 进行编译。 |
info | 打印有关当前系统的相关详细信息,可用于报告 Next.js 错误。 |
telemetry | 允许您启用或禁用 Next.js 完全匿名的遥测数据收集。 |
typegen | 为路由、页面、布局和路由处理程序生成 TypeScript 定义,无需运行完整构建。 |
upgrade | 将您的 Next.js 应用程序升级到最新版本。 |
须知:不带命令运行
next是next dev的别名。
next dev 选项next dev 以开发模式启动应用程序,支持热模块重载 (HMR)、错误报告等。运行 next dev 时可用以下选项:
| 选项 | 描述 |
|---|---|
-h, --help | 显示所有可用选项。 |
[directory] | 用于构建应用程序的目录。如果未提供,则使用当前目录。 |
--turbopack | 强制启用 Turbopack(默认已启用)。也可使用 --turbo。 |
--webpack | 在开发过程中使用 Webpack,而非默认的 Turbopack 打包器。 |
-p 或 --port <port> | 指定启动应用程序的端口号。默认值:3000,环境变量:PORT |
-H或 --hostname <hostname> | 指定启动应用程序的主机名。用于使应用程序在网络上的其他设备可用。默认值:0.0.0.0 |
--experimental-https | 启动 HTTPS 服务器并生成自签名证书。 |
--experimental-https-key <path> | HTTPS 密钥文件的路径。 |
--experimental-https-cert <path> | HTTPS 证书文件的路径。 |
--experimental-https-ca <path> | HTTPS 证书颁发机构文件的路径。 |
--experimental-upload-trace <traceUrl> | 将调试跟踪的子集报告给远程 HTTP URL。 |
next build 选项next build 创建应用程序的优化生产构建。输出显示每个路由的信息。例如:
Route (app)
┌ ○ /_not-found
└ ƒ /products/[id]
○ (Static) prerendered as static content
ƒ (Dynamic) server-rendered on demand以下选项可用于 next build 命令:
| 选项 | 描述 |
|---|---|
-h, --help | 显示所有可用选项。 |
[directory] | 用于构建应用程序的目录。如果未提供,将使用当前目录。 |
--turbopack | 强制启用 Turbopack(默认已启用)。也可使用 --turbo。 |
--webpack | 使用 Webpack 进行构建。 |
-d 或 --debug | 启用更详细的构建输出。启用此标志后,将显示额外的构建输出,例如重写、重定向和标头。 |
--profile | 启用 React 的生产性能分析。 |
--no-lint | 禁用 Lint 检查。注意:Lint 检查将在 Next 16 中从 next build 移除。如果您使用的是 Next 15.5+ 且 Lint 工具不是 eslint,则在构建期间不会进行 Lint 检查。 |
--no-mangling | 禁用 名称混淆。这可能会影响性能,仅应应用于调试目的。 |
--experimental-app-only | 仅构建 App Router 路由。 |
--experimental-build-mode [mode] | 使用实验性构建模式。(选项:"compile", "generate",默认值:"default") |
--debug-prerender | 在开发环境中调试预渲染错误。 |
--debug-build-paths=<patterns> | 仅构建特定路由以进行调试。 |
next start 选项next start 以生产模式启动应用程序。应用程序应首先使用 next build 进行编译。
以下选项可用于 next start 命令:
| 选项 | 描述 |
|---|---|
-h 或 --help | 显示所有可用选项。 |
[directory] | 用于启动应用程序的目录。如果未提供目录,将使用当前目录。 |
-p 或 --port <port> | 指定启动应用程序的端口号。(默认值:3000,环境变量:PORT) |
-H 或 --hostname <hostname> | 指定启动应用程序的主机名(默认值:0.0.0.0)。 |
--keepAliveTimeout <keepAliveTimeout> | 指定在关闭非活动连接之前等待的最大毫秒数。 |
next info 选项next info 打印有关当前系统的相关详细信息,这些信息可用于在提交 GitHub issue 时报告 Next.js 错误。此信息包括操作系统平台/架构/版本、二进制文件(Node.js, npm, Yarn, pnpm)、包版本(next, react, react-dom)等。
输出应如下所示:
Operating System:
Platform: darwin
Arch: arm64
Version: Darwin Kernel Version 23.6.0
Available memory (MB): 65536
Available CPU cores: 10
Binaries:
Node: 20.12.0
npm: 10.5.0
Yarn: 1.22.19
pnpm: 9.6.0
Relevant Packages:
next: 15.0.0-canary.115 // Latest available version is detected (15.0.0-canary.115).
eslint-config-next: 14.2.5
react: 19.0.0-rc
react-dom: 19.0.0
typescript: 5.5.4
Next.js Config:
output: N/A以下选项可用于 next info 命令:
| 选项 | 描述 |
|---|---|
-h 或 --help | 显示所有可用选项 |
--verbose | 收集额外的调试信息。 |
next telemetry 选项Next.js 收集关于一般使用情况的完全匿名遥测数据。参与此匿名计划是可选的,如果您不希望共享信息,可以选择退出。
以下选项可用于 next telemetry 命令:
| 选项 | 描述 |
|---|---|
-h, --help | 显示所有可用选项。 |
--enable | 启用 Next.js 的遥测数据收集。 |
--disable | 禁用 Next.js 的遥测数据收集。 |
了解更多关于 遥测 的信息。
next typegen 选项next typegen 为应用程序的路由生成 TypeScript 定义,而无需执行完整构建。这对于 IDE 自动补全和 CI 路由使用类型检查非常有用。
以前,路由类型只在 next dev 或 next build 期间生成,这意味着直接运行 tsc --noEmit 将无法验证您的路由类型。现在您可以独立生成类型并进行外部验证:
# Generate route types first, then validate with TypeScript
next typegen && tsc --noEmit
# Or in CI workflows for type checking without building
next typegen && npm run type-check以下选项可用于 next typegen 命令:
| 选项 | 描述 |
|---|---|
-h, --help | 显示所有可用选项。 |
[directory] | 用于生成类型的目录。如果未提供,将使用当前目录。 |
输出文件写入 <distDir>/types(通常是:.next/dev/types 或 .next/types,参见 isolatedDevBuild):
next typegen
# or for a specific app
next typegen ./apps/web此外,next typegen 会生成一个 next-env.d.ts 文件。我们建议将 next-env.d.ts 添加到您的 .gitignore 文件中。
next-env.d.ts 文件包含在您的 tsconfig.json 文件中,以使 Next.js 类型可用于您的项目。
为了确保在类型检查之前存在 next-env.d.ts 文件,请运行 next typegen。next dev 和 next build 命令也会生成 next-env.d.ts 文件,但仅为类型检查而运行这些命令通常是不理想的,例如在 CI/CD 环境中。
须知:
next typegen在生产构建阶段加载您的 Next.js 配置(next.config.js、next.config.mjs或next.config.ts)。请确保任何必需的环境变量和依赖项都可用,以便配置能正确加载。
next upgrade 选项next upgrade 将您的 Next.js 应用程序升级到最新版本。
以下选项可用于 next upgrade 命令:
| 选项 | 描述 |
|---|---|
-h, --help | 显示所有可用选项。 |
[directory] | 包含要升级的 Next.js 应用程序的目录。如果未提供,将使用当前目录。 |
--revision <revision> | 指定要升级到的 Next.js 版本或标签(例如,latest、canary、15.0.0)。默认为您当前安装的发布渠道。 |
--verbose | 在升级过程中显示详细输出。 |
如果在 next build 期间遇到预渲染错误,您可以传递 --debug-prerender 标志以获取更详细的输出:
next build --debug-prerender这将启用几个实验性选项,使调试更加容易:
experimental.serverMinification = falseexperimental.turbopackMinify = falseexperimental.serverSourceMaps = trueenablePrerenderSourceMaps = trueexperimental.prerenderEarlyExit = false这有助于在构建输出中显示更易读的堆栈跟踪和代码帧。
警告:
--debug-prerender仅用于开发环境调试。请勿将使用--debug-prerender生成的构建部署到生产环境,因为它可能会影响性能。
您可以使用 --debug-build-paths 选项在 App Router 和 Pages Router 中仅构建特定路由。这对于处理大型应用程序时的快速调试非常有用。--debug-build-paths 选项接受逗号分隔的文件路径并支持 glob 模式:
# Build a specific route
next build --debug-build-paths="app/page.tsx"
# Build more than one route
next build --debug-build-paths="app/page.tsx,pages/index.tsx"
# Use glob patterns
next build --debug-build-paths="app/**/page.tsx"
next build --debug-build-paths="pages/*.tsx"默认情况下,Next.js 在开发环境和使用 next start 时使用 http://localhost:3000。默认端口可以通过 -p 选项更改,如下所示:
next dev -p 4000或者使用 PORT 环境变量:
PORT=4000 next dev须知:
PORT无法在.env中设置,因为 HTTP 服务器的启动发生在任何其他代码初始化之前。
对于某些用例,例如 Webhook 或身份验证,您可以使用 HTTPS 在 localhost 上拥有一个安全环境。Next.js 可以使用 --experimental-https 标志通过 next dev 生成自签名证书:
next dev --experimental-https通过生成的证书,Next.js 开发服务器将位于 https://localhost:3000。除非使用 -p、--port 或 PORT 指定端口,否则将使用默认端口 3000。
您还可以使用 --experimental-https-key 和 --experimental-https-cert 提供自定义证书和密钥。此外,您还可以选择使用 --experimental-https-ca 提供自定义 CA 证书。
next dev --experimental-https --experimental-https-key ./certificates/localhost-key.pem --experimental-https-cert ./certificates/localhost.pemnext dev --experimental-https 仅用于开发目的,并使用 mkcert 创建本地受信任的证书。在生产环境中,请使用受信任机构正式颁发的证书。
将 Next.js 部署在下游代理(例如 AWS ELB/ALB 等负载均衡器)后面时,务必将 Next.js 底层的 HTTP 服务器配置为具有比下游代理超时时间_更长_的 keep-alive 超时。否则,一旦某个 TCP 连接达到 keep-alive 超时时间,Node.js 将立即终止该连接,而不会通知下游代理。这会导致代理在尝试重用已被 Node.js 终止的连接时出现代理错误。
要为生产 Next.js 服务器配置超时值,请将 --keepAliveTimeout(以毫秒为单位)传递给 next start,如下所示:
next start --keepAliveTimeout 70000您可以将任何 Node.js 参数 传递给 next 命令。例如:
NODE_OPTIONS='--throw-deprecation' next
NODE_OPTIONS='-r esm' next
NODE_OPTIONS='--inspect' next| 版本 | 变更 |
|---|---|
v16.0.0 | JS 包大小指标已从 next build 中移除 |
v15.5.0 | 添加 next typegen 命令 |
v15.4.0 | 为 next build 添加 --debug-prerender 选项以帮助调试预渲染错误。 |