Menu

Next.js CLI

Next.js CLI 允许你开发、构建和启动应用程序,以及执行其他操作。

要获取可用 CLI 命令的列表,可以在项目目录中运行以下命令:

Terminal
next -h

输出应该类似这样:

Terminal
Usage next [options] [command]
 
Next.js CLI 允许你开发、构建、启动应用程序,以及执行其他操作。
 
选项:
  -v, --version                输出 Next.js 版本。
  -h, --help                   显示此消息。
 
命令:
  build [directory] [options]  为应用程序创建优化的生产构建。
                               输出显示有关每个路由的信息。
  dev [directory] [options]    以开发模式启动 Next.js,包括热代码重载、
                               错误报告等功能。
  info [options]               打印当前系统的相关详细信息,可用于
                               报告 Next.js 错误。
  lint [directory] [options]   对 `/src``/app``/pages`
                               `/components` `/lib` 目录中的所有文件运行 ESLint。
                               如果尚未在应用程序中配置 ESLint,它还会提供
                               引导式安装所需依赖项。
  start [directory] [options]  以生产模式启动 Next.js。应用程序应该
                               先用 `next build` 编译。
  telemetry [options]          允许你启用或禁用 Next.js 完全匿名的
                               遥测收集。

你可以向 next 命令传递任何 node 参数:

Terminal
NODE_OPTIONS='--throw-deprecation' next
NODE_OPTIONS='-r esm' next
NODE_OPTIONS='--inspect' next

小贴士: 不带命令运行 next 与运行 next dev 相同

开发

next dev 以开发模式启动应用程序,包括热代码重载、错误报告等功能。

要获取 next dev 可用选项的列表,请在项目目录中运行以下命令:

Terminal
next dev -h

输出应该类似这样:

Terminal
Usage: next dev [directory] [options]
 
以开发模式启动 Next.js,包括热代码重载、错误报告等功能。
 
参数:
  [directory]                              用于构建应用程序的目录。
                                           如果未提供目录,将使用当前
                                           目录。
 
选项:
  --turbo                                  使用 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。包含敏感数据。
  -h, --help                               显示此消息。

应用程序默认将在 http://localhost:3000 启动。默认端口可以用 -p 更改,如下所示:

Terminal
next dev -p 4000

或使用 PORT 环境变量:

Terminal
PORT=4000 next dev

小贴士:

  • PORT 不能在 .env 中设置,因为 HTTP 服务器的启动发生在任何其他代码初始化之前。
  • 如果没有通过 CLI 选项 --portPORT 环境变量指定端口,Next.js 会自动重试其他端口,直到找到可用的端口。

你还可以将主机名设置为与默认的 0.0.0.0 不同,这对于使应用程序在网络上的其他设备可用很有用。可以使用 -H 更改默认主机名,如下所示:

Terminal
next dev -H 192.168.1.2

Turbopack

Turbopack (测试版),我们的新打包工具,正在 Next.js 中进行测试和稳定化,有助于在开发应用程序时加快本地迭代速度。

要在开发模式下使用 Turbopack,请添加 --turbo 选项:

Terminal
next dev --turbo

用于本地开发的 HTTPS

对于某些用例,如 webhooks 或身份验证,可能需要使用 HTTPS 在 localhost 上提供安全环境。Next.js 可以通过 next dev 生成自签名证书,如下所示:

Terminal
next dev --experimental-https

你还可以使用 --experimental-https-key--experimental-https-cert 提供自定义证书和密钥。此外,你还可以使用 --experimental-https-ca 提供自定义 CA 证书。

Terminal
next dev --experimental-https --experimental-https-key ./certificates/localhost-key.pem --experimental-https-cert ./certificates/localhost.pem

next dev --experimental-https 仅用于开发,并使用 mkcert 创建本地信任的证书。在生产环境中,请使用来自受信任机构的正式签发的证书。在部署到 Vercel 时,会为你的 Next.js 应用程序自动配置 HTTPS

构建

next build 为你的应用程序创建优化的生产构建。输出显示有关每个路由的信息:

Terminal
Route (app)                               Size     First Load JS
 /                                     5.3 kB         89.5 kB
 /_not-found                           885 B          85.1 kB
 /about                                137 B          84.4 kB
+ First Load JS shared by all             84.2 kB
 chunks/184-d3bb186aac44da98.js        28.9 kB
 chunks/30b509c0-f3503c24f98f3936.js   53.4 kB
 other shared chunks (total)
 
 
  (Static)  预渲染为静态内容
  • Size: 客户端导航到页面时下载的资源数量。每个路由的大小仅包括其依赖项。
  • First Load JS: 从服务器访问页面时下载的资源数量。所有页面共享的 JS 数量显示为单独的指标。

这两个值都经过 gzip 压缩。首次加载由绿色、黄色或红色表示。对于性能良好的应用程序,应该尽量保持绿色。

要获取 next build 可用选项的列表,请在项目目录中运行以下命令:

Terminal
next build -h

输出应该类似这样:

Terminal
Usage: next build [directory] [options]
 
为应用程序创建优化的生产构建。输出显示有关每个路由的信息。
 
参数:
  [directory]                       用于构建应用程序的目录。如果
                                    未提供,将使用当前目录。
 
选项:
  -d, --debug                       启用更详细的构建输出。
  --profile React 启用生产分析。
  --no-lint                         禁用 linting。
  --no-mangling                     禁用名称混淆。
  --experimental-app-only           仅构建 App Router 路由。
  --experimental-build-mode [mode]  使用实验性构建模式。(选项: "compile"
                                    "generate", 默认值: "default")
  -h, --help                        显示此消息。

调试

你可以通过在 next build 中使用 --debug 标志来启用更详细的构建输出。

Terminal
next build --debug

启用此标志后,将显示额外的构建输出,如重写、重定向和标头。

Linting

你可以像这样禁用构建的 linting:

Terminal
next build --no-lint

名称混淆

你可以像这样禁用构建的名称混淆:

Terminal
next build --no-mangling

小贴士: 这可能会影响性能,应该只用于调试目的。

分析

你可以通过在 next build 中使用 --profile 标志为 React 启用生产分析。

Terminal
next build --profile

之后,你可以像在开发中一样使用分析器。

生产

next start 以生产模式启动应用程序。应用程序应该先用 next build 编译。

要获取 next start 可用选项的列表,请在项目目录中运行以下命令:

Terminal
next start -h

输出应该类似这样:

Terminal
Usage: next start [directory] [options]
 
以生产模式启动 Next.js。应用程序应该先用 `next build` 编译。
 
参数:
  [directory]                           用于启动应用程序的目录。
                                        如果未提供目录,将使用当前
                                        目录。
 
选项:
  -p, --port <port>                     指定启动应用程序的端口号。
                                        (默认值: 3000, 环境变量: PORT)
  -H, --hostname <hostname>             指定启动应用程序的主机名
                                        (默认值: 0.0.0.0)
  --keepAliveTimeout <keepAliveTimeout> 指定在关闭非活动连接之前等待
                                        的最大毫秒数。
  -h, --help                            显示此消息。

应用程序默认将在 http://localhost:3000 启动。默认端口可以用 -p 更改,如下所示:

Terminal
next start -p 4000

或使用 PORT 环境变量:

Terminal
PORT=4000 next start

小贴士:

  • PORT 不能在 .env 中设置,因为 HTTP 服务器的启动发生在任何其他代码初始化之前。
  • next start 不能与 output: 'standalone'output: 'export' 一起使用。

Keep Alive 超时

在 Next.js 部署到下游代理 (例如 AWS ELB/ALB 等负载均衡器) 后面时,将 Next.js 底层 HTTP 服务器配置为比下游代理的超时时间更长的 keep-alive 超时 很重要。否则,一旦达到给定 TCP 连接的 keep-alive 超时,Node.js 将立即终止该连接,而不会通知下游代理。这会导致代理在尝试重用 Node.js 已经终止的连接时出错。

要为生产 Next.js 服务器配置超时值,请将 --keepAliveTimeout (以毫秒为单位) 传递给 next start,如下所示:

Terminal
next start --keepAliveTimeout 70000

信息

next info 打印当前系统的相关详细信息,可用于报告 Next.js 错误。 这些信息包括操作系统平台/架构/版本、二进制文件 (Node.js、npm、Yarn、pnpm) 和 npm 包版本 (nextreactreact-dom)。

要获取 next info 可用选项的列表,请在项目目录中运行以下命令:

Terminal
next info -h

输出应该类似这样:

Terminal
Usage: next info [options]
 
打印当前系统的相关详细信息,可用于报告 Next.js 错误。
 
选项:
  --verbose   收集额外的调试信息。
  -h, --help  显示此消息。

运行 next info 将为你提供类似这样的信息:

Terminal
 
操作系统:
  平台: linux
  架构: x64
  版本: #22-Ubuntu SMP Fri Nov 5 13:21:36 UTC 2021
  可用内存 (MB): 31795
  可用 CPU 核心: 16
二进制文件:
  Node: 16.13.0
  npm: 8.1.0
  Yarn: 1.22.17
  pnpm: 6.24.2
相关包:
  next: 14.1.1-canary.61 // 检测到最新可用版本 (14.1.1-canary.61)。
  react: 18.2.0
  react-dom: 18.2.0
Next.js 配置:
  output: N/A
 

然后应该将这些信息粘贴到 GitHub Issues 中。

你还可以运行 next info --verbose,它将打印有关系统和与 next 相关的包安装的额外信息。

Lint

next lintpages/app/components/lib/src/ 目录中的所有文件运行 ESLint。如果应用程序中尚未配置 ESLint,它还会提供引导式安装所需依赖项。

要获取 next lint 可用选项的列表,请在项目目录中运行以下命令:

Terminal
next lint -h

输出应该类似这样:

Terminal
Usage: next lint [directory] [options]
 
 `/src``/app``/pages``/components` `/lib` 目录中的所有文件运行 ESLint。如果应用程序中
尚未配置 ESLint,它还会提供引导式安装所需依赖项。
 
参数:
  [directory]                                         用于对应用程序进行 lint 的基础目录。
                                                      如果未提供目录,将使用当前目录。
 
选项:
  -d, --dir, <dirs...>                                包括要运行 ESLint 的目录。
  --file, <files...>                                  包括要运行 ESLint 的文件。
  --ext, [exts...]                                    指定 JavaScript 文件扩展名。(默认值:
                                                      [".js", ".mjs", ".cjs", ".jsx", ".ts", ".mts", ".cts", ".tsx"])
  -c, --config, <config>                              使用此配置文件,覆盖所有其他
                                                      配置选项。
  --resolve-plugins-relative-to, <rprt>               指定应从中解析插件的目录。
  --strict                                            使用 Next.js 严格配置创建
                                                      `.eslintrc.json` 文件。
  --rulesdir, <rulesdir...>                           使用此目录中的其他规则。
  --fix                                               自动修复 linting 问题。
  --fix-type <fixType>                                指定要应用的修复类型 (例如, problem,
                                                      suggestion, layout)。
  --ignore-path <path>                                指定要忽略的文件。
  --no-ignore <path>                                  禁用 `--ignore-path` 选项。
  --quiet                                             仅报告错误。
  --max-warnings [maxWarnings]                        在触发非零退出代码之前指定
                                                      警告的数量。(默认值: -1)
  -o, --output-file, <outputFile>                     指定要写入报告的文件。
  -f, --format, <format>                              使用特定的输出格式。
  --no-inline-config                                  防止注释更改配置或规则。
  --report-unused-disable-directives-severity <level> 指定未使用的 eslint-disable
                                                      指令的严重级别。(选项: "error", "off", "warn")
  --no-cache                                          禁用缓存。
  --cache-location, <cacheLocation>                   指定缓存的位置。
  --cache-strategy, [cacheStrategy]                   指定用于检测缓存中已更改文件的策略。
                                                      (默认值: "metadata")
  --error-on-unmatched-pattern                        当任何文件模式不匹配时报告错误。
  -h, --help                                          显示此消息。

如果你有其他想要进行 lint 的目录,可以使用 --dir 标志指定它们:

Terminal
next lint --dir utils

有关其他选项的更多信息,请查看我们的 ESLint 配置文档。

遥测

Next.js 收集完全匿名的遥测数据,用于一般使用情况。 参与这个匿名程序是可选的,如果你不想共享任何信息,可以选择退出。

要获取 next telemetry 可用选项的列表,请在项目目录中运行以下命令:

Terminal
next telemetry -h

输出应该类似这样:

Terminal
Usage: next telemetry [options]
 
允许你启用或禁用 Next.js 完全匿名的遥测收集。
 
选项:
  --enable    启用 Next.js 的遥测收集。
  --disable   禁用 Next.js 的遥测收集。
  -h, --help  显示此消息。
 
了解更多: https://nextjs.org/telemetry

了解更多关于 遥测 的信息。