You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: packages/next/README.md
+60Lines changed: 60 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1587,6 +1587,66 @@ Note: `NODE_ENV` is properly configured by the `next` subcommands, if absent, to
1587
1587
1588
1588
Note: we recommend putting `.next`, or your [custom dist folder](https://github.com/zeit/next.js#custom-configuration), in `.gitignore` or `.npmignore`. Otherwise, use `files` or `now.files` to opt-into a whitelist of files you want to deploy, excluding `.next` or your custom dist folder.
<li>We encourage contributing more examples to this section</li>
1597
+
</ul>
1598
+
</details>
1599
+
1600
+
Serverless deployment dramatically improves reliability and scalability by splitting your application into many entrypoints. In case of Next.js an entrypoint is a page in the `pages` directory.
1601
+
1602
+
To enable building serverless functions you have to enable the `serverless` build `target` in `next.config.js`:
1603
+
1604
+
```js
1605
+
// next.config.js
1606
+
module.exports= {
1607
+
target:'serverless'
1608
+
}
1609
+
```
1610
+
1611
+
The serverless target will output a single file per page, this file is completely standalone and doesn't require any dependencies to run:
- `void` refers to the function not having a return value. Calling the function will finish the request.
1625
+
1626
+
Next.js provides low-level APIs for Serverless as hosting platforms have different function signatures. In general you will want to wrap the output of a Next.js Serverless build with a compatability layer.
1627
+
1628
+
For example if the platform supports the Node.js [`http.Server`](https://nodejs.org/api/http.html#http_class_http_server) class:
const server = new http.Server((req, res) => page.render(req, res))
1634
+
server.listen(3000, () => console.log('Listening on http://localhost:3000'))
1635
+
```
1636
+
1637
+
For specific platform examples see [the examples section above](#serverless-deployment).
1638
+
1639
+
To summarize:
1640
+
1641
+
- Low-level API for implementing Serverless deployment
1642
+
- Every page in the `pages` directory becomes a serverless function
1643
+
- Creates the smallest possible Serverless function (50Kb base zip size)
1644
+
- Optimized for fast cold start of the function
1645
+
- The serverless function has 0 dependencies (they are included in the function bundle)
1646
+
- Uses the [http.IncomingMessage](https://nodejs.org/api/http.html#http_class_http_incomingmessage) and [http.ServerResponse](https://nodejs.org/api/http.html#http_class_http_serverresponse) from Node.js
1647
+
- opt-in using `target: 'serverless'` in `next.config.js`
1648
+
- Does not load `next.config.js` when executing the function, note that this means `publicRuntimeConfig` / `serverRuntimeConfig` are not supported
1649
+
1590
1650
## Browser support
1591
1651
1592
1652
Next.js supports IE11 and all modern browsers out of the box using [`@babel/preset-env`](https://new.babeljs.io/docs/en/next/babel-preset-env.html). In order to support IE11 Next.js adds a global `Promise` polyfill. In cases where your own code or any external NPM dependencies you are using requires features not supported by your target browsers you will need to implement polyfills.
0 commit comments