对于部署的NodeJS最佳实践 - 直接移动node_modules服务器或运行NPM install命令

问题描述 投票:4回答:5

什么是部署应用程序的NodeJS最好的做法?

1)直接从开发服务器移动node_modules文件夹生产服务器,使我们同当地环境可以在生产中产生也。任何节点模块的制作无论远程变化不会影响我们的代码。

2)用的package.json的帮助下,生产服务器运行npm install命令。这里的问题是,在节点模块的任何变化都会影响到我们的代码。我已经面临着回送模块(issue link)的一些问题。

谁能帮我?

node.js deployment loopbackjs
5个回答
9
投票

在生产服务器上运行npm install无法在一些特定情况下(缺乏编译工具,限制互联网接入等)来完成,同时,如果你要部署在多台机器同一个项目,可以为CPU,内存和带宽的浪费。

你应该使用相同的库和生产服务器的节点版本的机器上运行npm install --production,压缩node_modules和部署生产服务器上。你也应该保持package-lock.json文件查明版本。

这种方法还允许你创建/使用的开发包,然后修剪实际部署前的node_modules测试代码。


1
投票

我的猜测是,通过问这个问题,你真的不明白package.json文件的点。

所述的package.json文件被明确地用于此目的(即,和上传到NPM注册表),节点包的传送,而不必与它一起转移相关性的相当大的数目。

我会去尽量地说,一个人永远不能手动移动node_modules目录都没有。

当然使用npm install命令生产服务器上,这是做的正确方法。为了避免node_modules目录的任何变化相比,当地的环境中,使用package lock文件。这应该有助于在node_modules减少更改源代码。

我说这个的意思是没有不良意图


1
投票

当然npm install。但你不应该当谈到部署您的应用程序通过自己的手做这个。

使用这种像PM2工具。

至于你提到的包装变化的关注,简单的答案是package-lock.json


1
投票
  • 移动node_modules文件夹overkilled。
  • 运行npm install可能打破版本依赖性。
  • 最好的办法是npm ci。它使用package_lock文件并安装所需的依赖关系,而不修改版本。 NPM词意味着持续集成项目。 LINK

0
投票

我是一个ASP.NET核心开发者,但我最近开始使用Node.js的应用工作。对我来说,这是你提到的node_modules文件夹移动到生产的挑战之一。而不是整个文件夹移动到生产或只生产服务器上运行的npm install命令的,我想通了,并试图用Webpack成单/多束捆绑我的Node.js应用程序的一种方式,我只是摆脱了混乱管理node_modules文件夹。它只有拿起我的应用程序称为正在使用所需node_modules包/,并与我的应用程序代码一起单个文件捆绑起来,我部署一个文件到生产而无需移动整个node_modules文件夹。

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

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