Next.js 中的 npm run dev 和 npm run start 有什么区别?

问题描述 投票:0回答:3

我想知道

npm run dev
npm run start
之间有什么区别。 令我惊讶的是,我在网上找不到关于这个主题的太多信息。

具体来说,我想了解 React 和 Next JS 的背景。

我注意到,使用 React,您可以通过运行

npm run start
来启动应用程序,而无需先运行构建。另一方面,Next JS 的行为似乎并不相同(但我可能在设置上做错了)。 我尝试使用
npm run start
运行新的 Next 应用程序,因为它是
package.json
中的默认脚本,但它不起作用。它显示此错误:
*Error: Could not find a production build*

相反,运行

npm run dev
创建了一个 .next 文件夹,并在端口 3000 上启动服务器,没有任何问题。

任何人都可以帮助我理解这是如何工作的吗?

reactjs npm next.js npm-scripts
3个回答
54
投票

TL;DR: 在 Next.js 中,

next dev
用于在开发模式下运行应用程序。另一方面,
next start
用于在生产模式下运行应用程序,但需要首先运行
next build
以生成优化的生产版本。


发展

在开发中运行 Next.js 应用程序时,您需要使用

next dev
:

next dev
使用热代码在开发模式下启动应用程序 重新加载、错误报告等等。

生产

构建用于生产的 Next.js 应用程序时,您需要使用

next build
:

next build
为您的产品创建优化的生产版本 应用。输出显示有关每条路线的信息。

  • Size – 导航到页面时下载的资源数量 客户端。每条路线的大小仅包括其依赖项。
  • First Load JS – 访问页面时下载的资源数量 从服务器。所有人共享的JS数量单独显示 公制。

当您想要启动生产服务器时,后跟

next start

next start
在生产模式下启动应用程序。这 应用程序应首先使用
next build
进行编译。

next export
,将应用程序导出为 静态 HTML 时:

next export
允许您将应用程序导出为静态 HTML,这可以是 独立运行,无需 Node.js 服务器。


有关更多信息,请参阅 Next.js CLI 文档。


1
投票

通常这取决于 package.json 文件中写入的内容。例如,就我而言,在这个文件中我得到:

  "scripts": {
    "watch": "webpack --watch --watch-poll --progress --color",
    "prod": "webpack -p",
    "watch2": "webpack --watch --watch-poll --progress --color",
    "build": "webpack --config=webpack.prod.config.js --progress --watch-poll -p"
  },

所以,如果我跑步

npm run watch

我将进行编译以进行开发并将执行:

webpack --watch --watch-poll --progress --color

但是,如果我跑步

npm run build

它将被执行:

webpack --config=webpack.prod.config.js --progress --watch-poll -p

它将编译用于生产。


0
投票

开发模式(npm run dev): 在开发过程中,您通常运行 npm run dev 来启动 Next.js 提供的开发服务器。 此命令启动本地开发服务器,使您可以处理项目并实时查看更改。 默认情况下,您可以在 Web 浏览器中通过 http://localhost:3000 访问开发服务器。 生产构建(npm run build): 当您准备好部署应用程序时,可以运行 npm run build 来创建 Next.js 项目的优化生产版本。 此命令编译您的 Next.js 项目并生成用于生产部署的优化文件。 优化后的文件存储在项目根目录的 .next 目录中。 启动生产服务器(npm run start): 构建 Next.js 项目后,您可以使用 npm run start 启动生产服务器。 此命令启动一个生产就绪服务器,为构建过程中生成的优化文件提供服务。 值得注意的是,npm run start 提供 .next 目录中的预构建文件,因此不需要根据每个请求重建或重新编译项目。 生产服务器通常默认侦听端口 3000,与开发服务器类似。

© www.soinside.com 2019 - 2024. All rights reserved.