繁体   English   中英

nodejs部署的最佳实践 - 将node_modules直接移动到服务器或运行npm install命令

[英]Best practice for nodejs deployment - Directly moving node_modules to server or run npm install command

部署nodejs应用程序的最佳实践是什么?

1)直接将node_modules文件夹从开发服务器移动到生产服务器,以便也可以在生产中创建相同的本地环境。 无论远程对任何节点模块所做的更改都不会影响我们的代码。

2)在package.json的帮助下在生产服务器中运行npm install命令。 问题在于,节点模块中的任何更改都会影响我们的代码。 我遇到了环回模块的一些问题( 问题链接 )。

谁能帮我?

在生产服务器中运行npm install无法在某些情况下完成(缺少编译工具,限制互联网访问等等),如果你必须在多台机器上部署同一个项目,可能会浪费cpu,内存和带宽。

您应该在具有相同库和生产服务器节点版本的计算机上运行npm install --production ,压缩node_modules并在生产服务器上部署。 您还应该保留package-lock.json文件以精确定位版本。

此方法还允许您使用开发包构建/测试代码,然后在实际部署之前修剪node_modules。

我的猜测是,通过提出这个问题,你并不真正理解package.json文件的重点。

package.json文件明确用于此目的(并上传到npm注册表),传输节点包而不必随之传输大量的依赖项。

我甚至会说, 根本不应该手动移动node_modules目录。

绝对在生产服务器上使用npm install命令,这是正确的方法。 要避免与本地环境相比对node_modules目录进行任何更改,请使用package lock文件。 这应该有助于最小化node_modules源代码的node_modules

我的意思是说这不是坏事

绝对是npm install 但是,在部署应用程序时,您不应该自己动手做。

PM2一样使用此工具。

至于你对包中更改的关注,简短的回答是package-lock.json

  • 移动node_modules文件夹过度。
  • 运行npm install可能会破坏版本依赖性。
  • 最好的方法是npm ci 它使用package_lock文件并安装所需的依赖项而不修改版本。 npm ci意味着持续集成项目。 链接

我是一名ASP.NET核心开发人员,但我最近开始使用Node.js应用程序。 对我来说,这是你提到的将node_modules文件夹移动到生产的挑战之一。 我没有将整个文件夹移动到生产或只在生产服务器上运行npm install命令,而是想出了一种方法,将我的Node.js应用程序使用Webpack捆绑成一个/多个捆绑包,我只是摆脱了混乱管理node_modules文件夹。 它只获取在我的应用程序中使用/引用的所需node_modules包,并将其与我的应用程序代码捆绑在一个文件中,并将该单个文件部署到生产中,而无需移动整个node_modules文件夹。

我发现这种方法在我的情况下很有用,但如果这不是关于应用程序性能的正确方法或者这种方法的任何缺点,请建议我。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM