什么是部署应用程序的NodeJS最好的做法?
1)直接从开发服务器移动node_modules文件夹生产服务器,使我们同当地环境可以在生产中产生也。任何节点模块的制作无论远程变化不会影响我们的代码。
2)用的package.json的帮助下,生产服务器运行npm install
命令。这里的问题是,在节点模块的任何变化都会影响到我们的代码。我已经面临着回送模块(issue link)的一些问题。
谁能帮我?
在生产服务器上运行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
减少更改源代码。
我说这个的意思是没有不良意图
npm install
可能打破版本依赖性。npm ci
。它使用package_lock文件并安装所需的依赖关系,而不修改版本。 NPM词意味着持续集成项目。 LINK我是一个ASP.NET核心开发者,但我最近开始使用Node.js的应用工作。对我来说,这是你提到的node_modules
文件夹移动到生产的挑战之一。而不是整个文件夹移动到生产或只生产服务器上运行的npm install
命令的,我想通了,并试图用Webpack
成单/多束捆绑我的Node.js应用程序的一种方式,我只是摆脱了混乱管理node_modules
文件夹。它只有拿起我的应用程序称为正在使用所需node_modules包/,并与我的应用程序代码一起单个文件捆绑起来,我部署一个文件到生产而无需移动整个node_modules文件夹。
我发现在我的情况下,这种方法很有用,但请建议我,如果这不是关于应用程序,或者如果这种方法的缺点任何性能的正确方法。