Javascript NodeJS服务器端应用程序部署关联

Javascript NodeJS服务器端应用程序部署关联,javascript,node.js,git,webserver,node-modules,Javascript,Node.js,Git,Webserver,Node Modules,我正在编写一个以Angular作为前端的nodejs应用程序。 为此,我将Git作为我的代码管理服务器。 对于客户,我正在做缩小,它已准备好生产 但我不确定如何为生产准备服务器端文件。 我们是否需要将所有Git文件夹复制到生产服务器中?。 让我知道部署nodejs服务器应用程序的最佳方法。这实际上取决于您(或您的公司)希望如何组织工作流和项目的规模 有时我也会使用GIT存储库,因为这样更新非常简单:只需一个GIT pull和一个pm2 restart N命令(如果服务器文件得到编辑) 通过这种方

我正在编写一个以Angular作为前端的nodejs应用程序。 为此,我将Git作为我的代码管理服务器。 对于客户,我正在做缩小,它已准备好生产

但我不确定如何为生产准备服务器端文件。 我们是否需要将所有Git文件夹复制到生产服务器中?。
让我知道部署nodejs服务器应用程序的最佳方法。

这实际上取决于您(或您的公司)希望如何组织工作流和项目的规模

有时我也会使用GIT存储库,因为这样更新非常简单:只需一个
GIT pull
和一个
pm2 restart N
命令(如果服务器文件得到编辑)

通过这种方式,您不必安装整个开发堆栈来编译(并缩小)包-我想您可以在安装了所有开发工具的本地机器上工作

请记住,在安装仅在开发模式下需要的软件包时,请使用
--dev
标志,这样可以使生产服务器尽可能薄

我发现一个很好的实践是在最终的bundle文件名(对于js和css)中添加一些随机标记,然后将这些标记注入最终的html静态文件中,以避免刷新页面循环

一旦你的开发机器上有了捆绑包文件,只需将它们上传到服务器上(ftp、git、rsync、sshfs mount,随便你喜欢什么),然后(如果服务器文件被编辑)重新启动/重新加载节点进程(我使用pm2,这真的很棒)。如果只编辑客户端文件,则不需要重新加载

从这里开始,有很多或多或少复杂的方法来完成这项工作,比如git管道。。但要视情况而定

编辑:是一篇关于TaskRunner(gulp vs grunt vs vanilla npm)的好文章,虽然可能有点离题,但它分析了常见部署过程的某些方面

  • 您可以将其用作守护进程,使您的nodejs应用程序始终处于运行状态
  • 尽量不要在repo中包含
    node\u模块
    ,因为不同的机器有不同的设置/安装,除非您安装
    npm模块,否则在运行一个软件包之前,您无法判断它是否可以工作
  • 如果您熟悉
    Docker
    ,使用它,将所有(包括
    node_modules
    )文件预绑定到Docker映像中,并且您不需要
    pm2
    ,这里,
    Docker
    本身可以自动重新启动。这是理想的方法