如何部署 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
{
"name": "node-example",
"version": "0.0.1",
"dependencies": {
"express": "4.10.0",
"stylus": "0.49.2"
},
"devDependencies": {
"grunt": "0.4.5"
},
"engines": {
"node": "0.10.x",
"npm": "1.2.x"
}
}
自定义构建
有些应用在部署前需要额外的处理步骤,这时可以增加一个 npm postinstall
脚本。它会在npm install —production
后执行,生产环境下也是可用的。注意,构建工具不会自动安装devDependencies
里的软件包,如果你需要安装其中的软件,就把它移到dependencies
里。
默认应用类型
Node.js 应用在部署时可以没有Procfile
文件。如果没有Procfile
,构建工具会查找package.json
里的scripts.start
定义的脚本,然后以默认的web
应用类型使用npm start
启动此脚本。
运行任务
另外,npm
,node
等都在系统的path
环境变量里,可以直接通过flynn run
运行:
$ flynn run node -v
v0.10.32