如何包装&;部署Node.js+;express web应用程序?
我是Node.js编程新手,最近使用(express、主干和其他免费的视图技术,以及mongoDB)创建了一个示例web应用程序。现在,我想在一个登台环境中部署相同的应用程序,但我不确定如何打包此应用程序并分发相同的应用程序。[我可以处理mongoDb并单独设置它] 我来自Java世界,在那里我们为可重用的LIB创建JAR,为部署在servlet容器中的web应用程序创建war/ear包。现在,既然node.js本身也是一个web容器,那么如何打包我的webapp呢如何包装&;部署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构建
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')
你的webapp不会变成
exe希望这对寻找解决方案的人有所帮助,可以使用“npm pack”命令打包Node js应用程序。它会创建你的应用程序的zip文件,可以在生产/登台环境中运行。我使用了zeit的pkg模块。它可以为linux/win/macos创建跨平台的可交付成果。实际上在prod中使用了它