如何部署 Node.js 应用

Flynn 使用 Heroku Node.js 构建包来支持 Node.js 应用。

应用检测

当应用的目录里包含package.json文件时,Flynn 就会使用 Node.js 构建包。

环境依赖

Flynn 使用npm管理依赖。npm读取package.json文件的dependencies属性里的定义,它是一个简单的键值对象,软件包的名称是键名,对应可用版本的范围。

使用特定版本的 Node.js

可以在package.json文件的engines节(section)里定义 Node.js 版本。它使用 semver.io 来解析 Node.js 的版本,支持诸如:0.8.x>0.4>=0.8.5 <-0.8.14之类格式的查询。Node.js 的构建包支持 0.8.5 之后的版本,包含开发版。

示例 package.json

  1. {
  2. "name": "node-example",
  3. "version": "0.0.1",
  4. "dependencies": {
  5. "express": "4.10.0",
  6. "stylus": "0.49.2"
  7. },
  8. "devDependencies": {
  9. "grunt": "0.4.5"
  10. },
  11. "engines": {
  12. "node": "0.10.x",
  13. "npm": "1.2.x"
  14. }
  15. }

自定义构建

有些应用在部署前需要额外的处理步骤,这时可以增加一个 npm postinstall脚本。它会在npm install —production后执行,生产环境下也是可用的。注意,构建工具不会自动安装devDependencies里的软件包,如果你需要安装其中的软件,就把它移到dependencies里。

默认应用类型

Node.js 应用在部署时可以没有Procfile文件。如果没有Procfile,构建工具会查找package.json里的scripts.start定义的脚本,然后以默认的web应用类型使用npm start启动此脚本。

运行任务

另外,npmnode等都在系统的path环境变量里,可以直接通过flynn run运行:

  1. $ flynn run node -v
  2. v0.10.32

原文: http://doc.oschina.net/flynn?t=54098