如何部署 Node.js 应用 #如何部署 Node.js 应用 Flynn 使用 [Heroku Node.js 构建包](https://github.com/heroku/heroku-buildpack-nodejs)来支持 Node.js 应用。 ##应用检测 当应用的目录里包含`package.json`文件时,Flynn 就会使用 Node.js 构建包。 ##环境依赖 Flynn 使用`npm`管理依赖。`npm`读取`package.json`文件的`dependencies`[属性](https://www.npmjs.org/doc/files/package.json.html#dependencies)里的定义,它是一个简单的键值对象,软件包的名称是键名,对应可用版本的范围。 ##使用特定版本的 Node.js 可以在`package.json`文件的`engines`节([section](https://www.npmjs.org/doc/files/package.json.html#engines))里定义 Node.js 版本。它使用 [semver.io](http://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