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) 运行 npm install 命令在生产服务器中借助 package.json。这里的问题是,节点模块中的任何更改都会影响我们的代码。我在环回模块 () 方面遇到了一些问题。

谁能帮帮我?

我的猜测是问这个问题你并没有真正理解 package.json 文件的要点。

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

我什至可以说 永远不要 手动移动 node_modules 目录。

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

中源代码的更改

I mean no bad intent by saying this

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

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

这种方法还允许您使用开发包 build/test 您的代码,然后在实际部署之前 p运行ing node_modules。

绝对npm install。但是,在部署您的应用程序时,您不应该亲自执行此操作。

PM2 一样使用该工具。

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

我是一名 ASP.NET 核心开发人员,但我最近开始使用 Node.js 应用程序。对我来说,这是您提到的将 node_modules 文件夹移至生产环境的挑战之一。我没有将整个文件夹移动到生产环境或仅 运行 生产服务器上的 npm install 命令,而是想出并尝试了一种使用 Webpack 将我的 Node.js 应用程序捆绑到一个single/multiple 捆绑包,我刚刚摆脱了管理 node_modules 文件夹的麻烦。它只选择我的应用程序中 used/referred 所需的 node_modules 包,并将其与我的应用程序代码捆绑在一个文件中,然后我将该单个文件部署到生产环境中,而无需移动整个 [=23] =]文件夹。

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

  • 移动 node_modules 文件夹有点过头了。
  • 运行 npm install 可能会破坏版本依赖cies。
  • 最好的方法是 npm ci。它使用 package_lock 文件并在不修改版本的情况下安装所需的依赖项cies。 npm ci 用于持续集成项目。 LINK