{
  "name": "express",
  "description": "Sinatra inspired web development framework",
  "version": "2.5.11",
  "author": {
    "name": "TJ Holowaychuk",
    "email": "tj@vision-media.ca"
  },
  "contributors": [
    {
      "name": "TJ Holowaychuk",
      "email": "tj@vision-media.ca"
    },
    {
      "name": "Aaron Heckmann",
      "email": "aaron.heckmann+github@gmail.com"
    },
    {
      "name": "Ciaran Jessup",
      "email": "ciaranj@gmail.com"
    },
    {
      "name": "Guillermo Rauch",
      "email": "rauchg@gmail.com"
    }
  ],
  "dependencies": {
    "connect": "1.x",
    "mime": "1.2.4",
    "qs": "0.4.x",
    "mkdirp": "0.3.0"
  },
  "devDependencies": {
    "connect-form": "0.2.1",
    "ejs": "0.4.2",
    "expresso": "0.9.2",
    "hamljs": "0.6.x",
    "jade": "0.16.2",
    "stylus": "0.13.0",
    "should": "0.3.2",
    "express-messages": "0.0.2",
    "node-markdown": ">= 0.0.1",
    "connect-redis": ">= 0.0.1"
  },
  "keywords": [
    "framework",
    "sinatra",
    "web",
    "rest",
    "restful"
  ],
  "repository": {
    "type": "git",
    "url": "git://github.com/visionmedia/express"
  },
  "main": "index",
  "bin": {
    "express": "./bin/express"
  },
  "scripts": {
    "test": "make test",
    "prepublish": "npm prune"
  },
  "readme": "\n# Express\n      \n  Insanely fast (and small) server-side JavaScript web development framework\n  built on [node](http://nodejs.org) and [Connect](http://github.com/senchalabs/connect).\n  \n     var app = express.createServer();\n     \n     app.get('/', function(req, res){\n       res.send('Hello World');\n     });\n     \n     app.listen(3000);\n\n## Installation\n\n    $ npm install express\n\nor to access the `express(1)` executable install globally:\n\n    $ npm install -g express\n\n## Quick Start\n\n The quickest way to get started with express is to utilize the executable `express(1)` to generate an application as shown below:\n\n Create the app:\n\n    $ npm install -g express\n    $ express /tmp/foo && cd /tmp/foo\n\n Install dependencies:\n\n    $ npm install -d\n\n Start the server:\n\n    $ node app.js\n\n## Features\n\n  * Robust routing\n  * Redirection helpers\n  * Dynamic view helpers\n  * Content negotiation\n  * Focus on high performance\n  * View rendering and partials support\n  * Environment based configuration\n  * Session based flash notifications\n  * Built on [Connect](http://github.com/senchalabs/connect)\n  * High test coverage\n  * Executable for generating applications quickly\n  * Application level view options\n\nVia Connect:\n\n  * Session support\n  * Cache API\n  * Mime helpers\n  * ETag support\n  * Persistent flash notifications\n  * Cookie support\n  * JSON-RPC\n  * Logging\n  * and _much_ more!\n\n## Contributors\n\nThe following are the major contributors of Express (in no specific order).\n\n  * TJ Holowaychuk ([visionmedia](http://github.com/visionmedia))\n  * Ciaran Jessup ([ciaranj](http://github.com/ciaranj))\n  * Aaron Heckmann ([aheckmann](http://github.com/aheckmann))\n  * Guillermo Rauch ([guille](http://github.com/guille))\n\n## More Information\n\n  * #express on freenode\n  * [express-expose](http://github.com/visionmedia/express-expose) expose objects, functions, modules and more to client-side js with ease\n  * [express-configure](http://github.com/visionmedia/express-configuration) async configuration support\n  * [express-messages](http://github.com/visionmedia/express-messages) flash notification rendering helper\n  * [express-namespace](http://github.com/visionmedia/express-namespace) namespaced route support\n  * [express-params](https://github.com/visionmedia/express-params) param pre-condition functions\n  * [express-mongoose](https://github.com/LearnBoost/express-mongoose) plugin for easy rendering of Mongoose async Query results\n  * Follow [tjholowaychuk](http://twitter.com/tjholowaychuk) on twitter for updates\n  * [Google Group](http://groups.google.com/group/express-js) for discussion\n  * Visit the [Wiki](http://github.com/visionmedia/express/wiki)\n  * [日本語ドキュメンテーション](http://hideyukisaito.com/doc/expressjs/) by [hideyukisaito](https://github.com/hideyukisaito)\n  * Screencast - [Introduction](http://bit.ly/eRYu0O)\n  * Screencast - [View Partials](http://bit.ly/dU13Fx)\n  * Screencast - [Route Specific Middleware](http://bit.ly/hX4IaH)\n  * Screencast - [Route Path Placeholder Preconditions](http://bit.ly/eNqmVs)\n\n## Node Compatibility\n\nExpress 1.x is compatible with node 0.2.x and connect < 1.0.\n\nExpress 2.x is compatible with node 0.4.x or 0.6.x, and connect 1.x\n\nExpress 3.x (master) will be compatible with node 0.6.x and connect 2.x\n\n## Viewing Examples\n\nFirst install the dev dependencies to install all the example / test suite deps:\n\n    $ npm install\n\nthen run whichever tests you want:\n\n    $ node examples/jade/app.js\n\n## Running Tests\n\nTo run the test suite first invoke the following command within the repo, installing the development dependencies:\n\n    $ npm install\n\nthen run the tests:\n\n    $ make test\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2009-2011 TJ Holowaychuk &lt;tj@vision-media.ca&gt;\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n",
  "readmeFilename": "Readme.md",
  "bugs": {
    "url": "https://github.com/visionmedia/express/issues"
  },
  "homepage": "https://github.com/visionmedia/express",
  "_id": "express@2.5.11",
  "_from": "express@2.5.x"
}
