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

时间:2018-06-05 06:18:25

标签: node.js deployment loopbackjs

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

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

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

任何人都可以帮助我吗?

5 个答案:

答案 0 :(得分:6)

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

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

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

答案 1 :(得分:1)

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

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

我甚至会说,永远不会手动移动node_modules目录。

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

  

我的意思是说这个没有坏意图

答案 2 :(得分:1)

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

使用此工具,如PM2

至于您对包裹变化的担忧,简短的回答是package-lock.json

答案 3 :(得分:1)

  • 移动node_modules文件夹已被禁用。
  • 运行npm install可能会破坏版本依赖性。
  • 最好的方法是npm ci。它使用package_lock文件并安装所需的依赖项,而无需修改版本。 npm ci用于持续集成项目。 LINK

答案 4 :(得分:0)

我是ASP.NET Core开发人员,但是最近我开始使用Node.js应用程序。对我来说,这是您提到的将node_modules文件夹移至生产环境的挑战之一。我没有找到整个文件夹,也没有在生产服务器上只运行npm install命令,而是想出了一种方法,尝试使用Webpack将Node.js应用程序捆绑为一个/多个捆绑包,并且我只是摆脱了管理node_modules文件夹的麻烦。它只会提取我的应用程序中正在使用/引用的必需的node_modules程序包,并将其与我的应用程序代码捆绑在一起,并在不移动整个node_modules文件夹的情况下将该单个文件部署到生产环境中。

我发现这种方法对我来说很有用,但是如果这不是关于应用程序性能的正确方法,或者这种方法有什么弊端,请提出建议。