簡體   English   中英

Next.js 生產版本是否需要服務器中的 node_modules 文件夾?

[英]Does Next js production build need node_modules folder in the server?

我對 Next.js 及其部署過程相當陌生。 我最近將我的一個 React js 項目轉換為 Next.js,以便利用 Next.js 提供的服務器端渲染功能。 現在是部署時間,我發現如果服務器中沒有node_modules文件夾,Next build 將無法部署。 我在我的頁面中使用getServerSideProps並在 package.json 中使用"build": "next build"命令進行構建。 問題是我的 node_modules 文件夾接近 300MB( .next build 又增加了大約 10MB),我認為每次部署都伴隨這么多重量不是最佳實踐(我打算部署這個構建的不同實例,因此服務器中有 310MB X 實例數)。 我在這里做錯了什么還是這是實現此目標的唯一方法? 我感謝任何答案。 謝謝...

經過一番研究,我正在回答我自己的問題。 如果使用getServerSideProps ,則無法靜態導出項目。 因此需要 node_modules 文件夾才能在服務器上部署項目。 這並不意味着您必須 FTP node_modules ,您可以在服務器端執行 npm 構建,它將node_modules下載到部署文件夾。 就我而言,部署文件夾重約 310MB,而node_modules文件夾本身約 300MB。

不,您不需要添加node_modules

建議您查看有關如何部署 Next.js 應用程序的文檔,但本質上:

  • 運行next build
  • 運行next export
  • 部署您的out文件夾(默認輸出文件夾,可以更改)

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

最新的Next.js 文檔有一個關於如何創建獨立構建的很好的示例,以及如何使用 docker完成它的一個很好的示例。 截至目前,該功能是 實驗性的。

// next.config.js
module.exports = {
  experimental: {
    outputStandalone: true,
  },
}

您可以使用 [@varcel/nnc][1] package 來編譯項目。

簡而言之:

安裝 package: npm i --save-dev @vercel/ncc
更改package.json 中的構建命令腳本
來自: "build": "nest build",
To: "build": "ncc build src/main.ts -o dist",

PS 在我的例子中,應用程序的入口點是src/main.ts
[1]: https://www.npmjs.com/package/@vercel/ncc

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM