Readme.md
1 [](https://expressjs.com/) 2 3 **Fast, unopinionated, minimalist web framework for [Node.js](https://nodejs.org).** 4 5 **This project has a [Code of Conduct][].** 6 7 ## Table of contents 8 9 * [Installation](#Installation) 10 * [Features](#Features) 11 * [Docs & Community](#docs--community) 12 * [Quick Start](#Quick-Start) 13 * [Running Tests](#Running-Tests) 14 * [Philosophy](#Philosophy) 15 * [Examples](#Examples) 16 * [Contributing to Express](#Contributing) 17 * [TC (Technical Committee)](#tc-technical-committee) 18 * [Triagers](#triagers) 19 * [License](#license) 20 21 22 [![NPM Version][npm-version-image]][npm-url] 23 [![NPM Downloads][npm-downloads-image]][npm-downloads-url] 24 [![OpenSSF Scorecard Badge][ossf-scorecard-badge]][ossf-scorecard-visualizer] 25 26 27 ```js 28 import express from 'express' 29 30 const app = express() 31 32 app.get('/', (req, res) => { 33 res.send('Hello World') 34 }) 35 36 app.listen(3000) 37 ``` 38 39 ## Installation 40 41 This is a [Node.js](https://nodejs.org/en/) module available through the 42 [npm registry](https://www.npmjs.com/). 43 44 Before installing, [download and install Node.js](https://nodejs.org/en/download/). 45 Node.js 18 or higher is required. 46 47 If this is a brand new project, make sure to create a `package.json` first with 48 the [`npm init` command](https://docs.npmjs.com/creating-a-package-json-file). 49 50 Installation is done using the 51 [`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): 52 53 ```bash 54 npm install express 55 ``` 56 57 Follow [our installing guide](https://expressjs.com/en/starter/installing.html) 58 for more information. 59 60 ## Features 61 62 * Robust routing 63 * Focus on high performance 64 * Super-high test coverage 65 * HTTP helpers (redirection, caching, etc) 66 * View system supporting 14+ template engines 67 * Content negotiation 68 * Executable for generating applications quickly 69 70 ## Docs & Community 71 72 * [Website and Documentation](https://expressjs.com/) - [[website repo](https://github.com/expressjs/expressjs.com)] 73 * [GitHub Organization](https://github.com/expressjs) for Official Middleware & Modules 74 * [Github Discussions](https://github.com/expressjs/discussions) for discussion on the development and usage of Express 75 76 **PROTIP** Be sure to read the [migration guide to v5](https://expressjs.com/en/guide/migrating-5) 77 78 ## Quick Start 79 80 The quickest way to get started with express is to utilize the executable [`express(1)`](https://github.com/expressjs/generator) to generate an application as shown below: 81 82 Install the executable. The executable's major version will match Express's: 83 84 ```bash 85 npm install -g express-generator@4 86 ``` 87 88 Create the app: 89 90 ```bash 91 express /tmp/foo && cd /tmp/foo 92 ``` 93 94 Install dependencies: 95 96 ```bash 97 npm install 98 ``` 99 100 Start the server: 101 102 ```bash 103 npm start 104 ``` 105 106 View the website at: http://localhost:3000 107 108 ## Philosophy 109 110 The Express philosophy is to provide small, robust tooling for HTTP servers, making 111 it a great solution for single page applications, websites, hybrids, or public 112 HTTP APIs. 113 114 Express does not force you to use any specific ORM or template engine. With support for over 115 14 template engines via [@ladjs/consolidate](https://github.com/ladjs/consolidate), 116 you can quickly craft your perfect framework. 117 118 ## Examples 119 120 To view the examples, clone the Express repository: 121 122 ```bash 123 git clone https://github.com/expressjs/express.git --depth 1 && cd express 124 ``` 125 126 Then install the dependencies: 127 128 ```bash 129 npm install 130 ``` 131 132 Then run whichever example you want: 133 134 ```bash 135 node examples/content-negotiation 136 ``` 137 138 ## Contributing 139 140 [![Linux Build][github-actions-ci-image]][github-actions-ci-url] 141 [![Test Coverage][coveralls-image]][coveralls-url] 142 143 The Express.js project welcomes all constructive contributions. Contributions take many forms, 144 from code for bug fixes and enhancements, to additions and fixes to documentation, additional 145 tests, triaging incoming pull requests and issues, and more! 146 147 See the [Contributing Guide](Contributing.md) for more technical details on contributing. 148 149 ### Security Issues 150 151 If you discover a security vulnerability in Express, please see [Security Policies and Procedures](Security.md). 152 153 ### Running Tests 154 155 To run the test suite, first install the dependencies: 156 157 ```bash 158 npm install 159 ``` 160 161 Then run `npm test`: 162 163 ```bash 164 npm test 165 ``` 166 167 ## People 168 169 The original author of Express is [TJ Holowaychuk](https://github.com/tj) 170 171 [List of all contributors](https://github.com/expressjs/express/graphs/contributors) 172 173 ### TC (Technical Committee) 174 175 * [UlisesGascon](https://github.com/UlisesGascon) - **Ulises Gascón** (he/him) 176 * [jonchurch](https://github.com/jonchurch) - **Jon Church** 177 * [wesleytodd](https://github.com/wesleytodd) - **Wes Todd** 178 * [LinusU](https://github.com/LinusU) - **Linus Unnebäck** 179 * [blakeembrey](https://github.com/blakeembrey) - **Blake Embrey** 180 * [sheplu](https://github.com/sheplu) - **Jean Burellier** 181 * [crandmck](https://github.com/crandmck) - **Rand McKinney** 182 * [ctcpip](https://github.com/ctcpip) - **Chris de Almeida** 183 184 <details> 185 <summary>TC emeriti members</summary> 186 187 #### TC emeriti members 188 189 * [dougwilson](https://github.com/dougwilson) - **Douglas Wilson** 190 * [hacksparrow](https://github.com/hacksparrow) - **Hage Yaapa** 191 * [jonathanong](https://github.com/jonathanong) - **jongleberry** 192 * [niftylettuce](https://github.com/niftylettuce) - **niftylettuce** 193 * [troygoode](https://github.com/troygoode) - **Troy Goode** 194 </details> 195 196 197 ### Triagers 198 199 * [aravindvnair99](https://github.com/aravindvnair99) - **Aravind Nair** 200 * [bjohansebas](https://github.com/bjohansebas) - **Sebastian Beltran** 201 * [carpasse](https://github.com/carpasse) - **Carlos Serrano** 202 * [CBID2](https://github.com/CBID2) - **Christine Belzie** 203 * [dpopp07](https://github.com/dpopp07) - **Dustin Popp** 204 * [UlisesGascon](https://github.com/UlisesGascon) - **Ulises Gascón** (he/him) 205 * [3imed-jaberi](https://github.com/3imed-jaberi) - **Imed Jaberi** 206 * [IamLizu](https://github.com/IamLizu) - **S M Mahmudul Hasan** (he/him) 207 * [Phillip9587](https://github.com/Phillip9587) - **Phillip Barta** 208 * [Sushmeet](https://github.com/Sushmeet) - **Sushmeet Sunger** 209 * [rxmarbles](https://github.com/rxmarbles) **Rick Markins** (He/him) 210 211 <details> 212 <summary>Triagers emeriti members</summary> 213 214 #### Emeritus Triagers 215 216 * [AuggieH](https://github.com/AuggieH) - **Auggie Hudak** 217 * [G-Rath](https://github.com/G-Rath) - **Gareth Jones** 218 * [MohammadXroid](https://github.com/MohammadXroid) - **Mohammad Ayashi** 219 * [NawafSwe](https://github.com/NawafSwe) - **Nawaf Alsharqi** 220 * [NotMoni](https://github.com/NotMoni) - **Moni** 221 * [VigneshMurugan](https://github.com/VigneshMurugan) - **Vignesh Murugan** 222 * [davidmashe](https://github.com/davidmashe) - **David Ashe** 223 * [digitaIfabric](https://github.com/digitaIfabric) - **David** 224 * [e-l-i-s-e](https://github.com/e-l-i-s-e) - **Elise Bonner** 225 * [fed135](https://github.com/fed135) - **Frederic Charette** 226 * [firmanJS](https://github.com/firmanJS) - **Firman Abdul Hakim** 227 * [getspooky](https://github.com/getspooky) - **Yasser Ameur** 228 * [ghinks](https://github.com/ghinks) - **Glenn** 229 * [ghousemohamed](https://github.com/ghousemohamed) - **Ghouse Mohamed** 230 * [gireeshpunathil](https://github.com/gireeshpunathil) - **Gireesh Punathil** 231 * [jake32321](https://github.com/jake32321) - **Jake Reed** 232 * [jonchurch](https://github.com/jonchurch) - **Jon Church** 233 * [lekanikotun](https://github.com/lekanikotun) - **Troy Goode** 234 * [marsonya](https://github.com/marsonya) - **Lekan Ikotun** 235 * [mastermatt](https://github.com/mastermatt) - **Matt R. Wilson** 236 * [maxakuru](https://github.com/maxakuru) - **Max Edell** 237 * [mlrawlings](https://github.com/mlrawlings) - **Michael Rawlings** 238 * [rodion-arr](https://github.com/rodion-arr) - **Rodion Abdurakhimov** 239 * [sheplu](https://github.com/sheplu) - **Jean Burellier** 240 * [tarunyadav1](https://github.com/tarunyadav1) - **Tarun yadav** 241 * [tunniclm](https://github.com/tunniclm) - **Mike Tunnicliffe** 242 * [enyoghasim](https://github.com/enyoghasim) - **David Enyoghasim** 243 * [0ss](https://github.com/0ss) - **Salah** 244 * [import-brain](https://github.com/import-brain) - **Eric Cheng** (he/him) 245 * [dakshkhetan](https://github.com/dakshkhetan) - **Daksh Khetan** (he/him) 246 * [lucasraziel](https://github.com/lucasraziel) - **Lucas Soares Do Rego** 247 * [mertcanaltin](https://github.com/mertcanaltin) - **Mert Can Altin** 248 249 </details> 250 251 252 ## License 253 254 [MIT](LICENSE) 255 256 [coveralls-image]: https://badgen.net/coveralls/c/github/expressjs/express/master 257 [coveralls-url]: https://coveralls.io/r/expressjs/express?branch=master 258 [github-actions-ci-image]: https://badgen.net/github/checks/expressjs/express/master?label=CI 259 [github-actions-ci-url]: https://github.com/expressjs/express/actions/workflows/ci.yml 260 [npm-downloads-image]: https://badgen.net/npm/dm/express 261 [npm-downloads-url]: https://npmcharts.com/compare/express?minimal=true 262 [npm-url]: https://npmjs.org/package/express 263 [npm-version-image]: https://badgen.net/npm/v/express 264 [ossf-scorecard-badge]: https://api.scorecard.dev/projects/github.com/expressjs/express/badge 265 [ossf-scorecard-visualizer]: https://ossf.github.io/scorecard-visualizer/#/projects/github.com/expressjs/express 266 [Code of Conduct]: https://github.com/expressjs/express/blob/master/Code-Of-Conduct.md