如何包装&;部署Node.js+;express web应用程序?

如何包装&;部署Node.js+;express web应用程序?,node.js,express,web-deployment,packaging,Node.js,Express,Web Deployment,Packaging,我是Node.js编程新手,最近使用(express、主干和其他免费的视图技术,以及mongoDB)创建了一个示例web应用程序。现在,我想在一个登台环境中部署相同的应用程序,但我不确定如何打包此应用程序并分发相同的应用程序。[我可以处理mongoDb并单独设置它] 我来自Java世界,在那里我们为可重用的LIB创建JAR,为部署在servlet容器中的web应用程序创建war/ear包。现在,既然node.js本身也是一个web容器,那么如何打包我的webapp呢 是否有使用express构建

我是Node.js编程新手,最近使用(express、主干和其他免费的视图技术,以及mongoDB)创建了一个示例web应用程序。现在,我想在一个登台环境中部署相同的应用程序,但我不确定如何打包此应用程序并分发相同的应用程序。[我可以处理mongoDb并单独设置它]

我来自Java世界,在那里我们为可重用的LIB创建JAR,为部署在servlet容器中的web应用程序创建war/ear包。现在,既然node.js本身也是一个web容器,那么如何打包我的webapp呢

  • 是否有使用express构建的打包节点webapps的标准格式/指南?(节点应用程序是否有类似的jar/war打包系统?)
  • 打包后如何部署?既然它也是自己的容器,它会变成exe吗
    PS:到目前为止,我正在考虑将所有必需的源文件手动复制到登台环境中,并运行npm命令下载该机器上的所有依赖项,然后使用“永久”或其他机制运行我的server.js。(另外,添加一些监控,以防应用程序崩溃和永远失败)我不确定这是不是正确的方法?我相信一定有一些标准化的方法来解决这个问题。

    没有标准化的方法,但你走的是正确的道路。如果您的
    package.json
    是最新的并且保存完好,您可以将/zip/克隆您的应用程序目录复制到生产系统,不包括
    节点\ u模块

    在您的生产系统上,运行
    npm install
    要安装您的依赖项,请执行
    npm test
    如果您有测试,最后执行
    NODE\u ENV=production NODE server.js


    我认为最近的一些幻灯片很有帮助,其中还包括像“永远”这样的包装主题。有几种方法可以实现这一点:

    • 将代码推入Git存储库,排除所有非代码的内容(
      node\u modules/**
      ),然后将其拉入暂存环境,运行
      npm install
      以恢复所有依赖项

    • 用它创建一个NPM包,在您的登台环境中通过
      NPM
      安装它(这也应该考虑到所有依赖项)

    • 手动将/ssh文件复制到登台环境(这可以通过
      Grunt
      自动完成),然后通过
      npm


    部署
    Node.js
    应用程序非常简单。在maven中,有
    pom.xml
    Node.js
    中的相关概念是
    package.json
    。您可以在
    package.json
    上声明依赖关系。您还可以在
    package.json
    上进行环境设置。例如,在dev环境中,您可以这样说

    我想运行单元测试

    但在生产上,

    我想跳过单元测试

    您在
    .m2
    文件夹下有maven的本地存储库。在Node.js中,Node.js项目下有
    Node\u modules
    文件夹。您可以看到具有其名称的模块文件夹

    让我们来看看这个答案的
    grunt
    部分
    Grunt
    是前端资产、html、javascript和css的任务管理器。例如,在部署之前,您可以缩小html、css、javascript甚至图像。您还可以将
    grunt
    任务运行函数放入
    package.json

    如果您想查看示例应用程序,可以找到一个示例博客应用程序。检查文件夹结构和
    package.json
    以供参考

    对于部署,我建议您为启动应用程序部署heroku。你可以找到怎么做。这是一个简单的基于git的部署

    在项目运行部分,只需设置您的环境
    NODE\u ENV=development
    NODE app.js
    。您的项目中有
    app.js

    下面是java和nodejs的相关概念

  • maven clean安装
    =>
    npm安装
  • .m2
    文件夹=>
    节点模块
    (在项目文件夹下)
  • mvn测试
    =>
    npm测试
    (关于
    package.json的测试部分
  • junit
    powermock
    ,…=>
  • springmvc
    =>
  • pom.xml
    =>
    package.json
  • 导入包
    =>
    需要('module\u name')
  • 是否有打包节点webapps的标准格式/指南 使用express构建?(是否有类似的jar/war包装系统 节点应用程序?)
  • 是的

    本规范描述了的CommonJS包格式 分发CommonJS程序和库。CommonJS包是一个 模块、代码和其他资产集合的内聚包装 变成一个单一的形式。它为便利的交付提供了基础, CommonJS组件的安装和管理

    关于你的下一个问题:

    二,。打包后如何部署?既然它也是自己的容器,它会变成exe吗

    我支持胡塞因的建议,将其部署到生产现场。对于开发和登台,我分别使用VirtualBox和Amazon EC2:

    此程序采用由build Debian cloud或 Debian VirtualBox Appliance并将其转换为Node.js“Appliance”, 能够运行通过git部署的节点应用程序


    你的webapp不会变成
    exe

    希望这对寻找解决方案的人有所帮助,可以使用“npm pack”命令打包Node js应用程序。它会创建你的应用程序的zip文件,可以在生产/登台环境中运行。

    我使用了zeit的pkg模块。它可以为linux/win/macos创建跨平台的可交付成果。实际上在prod中使用了它