[英]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。
最新的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.