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
部署 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