Next js 生产构建是否需要服务器中的 node_modules 文件夹?

我对 Next js 及其部署过程相当陌生。我最近将我的一个 react js 项目转换为 Next js,以便利用 Next js 提供的服务器端渲染功能。现在到了部署时间,我发现如果没有服务器中的 node_modules 文件夹,下一个构建将不会部署。我在我的页面中使用 getServerSideProps 并在 package.json 中使用 "build": "next build" 命令构建。问题是我的 node_modules 文件夹接近 300MB( .next 构建增加了大约 10MB),我认为每次部署都伴随这么大的重量不是最佳实践(我打算有这个构建的不同实例部署,因此 310MB X 个实例)在服务器中。我在这里做错了什么还是这是实现这一目标的唯一方法?我很感激任何答案。谢谢...

stack overflow Does Next js production build need node_modules folder in the server?
原文答案
author avatar

接受的答案

经过一番研究,我正在回答我自己的问题。如果你使用 getServerSideProps 你不能静态导出你的项目。因此,需要 node_modules 文件夹才能在服务器上部署项目。这并不意味着您必须通过 FTP 下载 node_modules ,您可以在服务器端进行 npm 构建,将 node_modules 下载到部署文件夹。就我而言,部署文件夹重约 310MB,而 node_modules 文件夹本身约为 300MB。


答案:

作者头像

最新的 Next.js documentation 有一个关于如何创建独立构建的很好的例子,还有一个很好的例子来说明如何完成它 with docker 。到目前为止,该功能是 experimental

// next.config.js
module.exports = {
  experimental: {
    outputStandalone: true,
  },
}
作者头像

不,您不需要添加您的 node_modules

会向您推荐 check out the docs 关于如何部署 Next.js 应用程序,但本质上是:

  • 运行 next build
  • 运行 next export
  • 部署您的 out 文件夹(默认输出文件夹,可以更改)

或者,您也可以使用 Netlify 来部署和托管您的应用程序。