Both client and server run with Express. You can add any express plugin to the server. The configuration file is in the server/index file. Currently we've added compression and cookies middleware to the express that you can remove them if you like.
This package comes with 3 main commands:
There is a .env.example file in the root directory. Rename it to .env and define your environment variables there. Then in the code you can use those variables, for example
process.env.YOUR_ENV_VAR
We where using localStorage for storing access tokens received from the API. But as you know, localStorage is a browser API and doesn't work in the server. So we added support for reading and writing cookies. For writing cookies we added an express middleware. Writing cookies is as follow:
import React, { Component } from 'react'
export default class MyPage extends Component {
static getInitialProps({req}) {
req.universalCookies.set("token", token);
return {}
}
render() {
...
}
}
Reading cookies is as simple as writing them
import React, { Component } from 'react'
import cookies from 'next-cookies'
export default class SomePage extends Component {
static getInitialProps(ctx) {
const {token} = cookies(ctx)
return {token}
}
render() {
const {token} = this.props
...
}
}
We've added Webpack Bundle Analyzer in the webpack config in next.config.js. For analyzing server bundle add BUNDLE_ANALYZE=server, for client add BUNDLE_ANALYZE=client and for analyzing both, add BUNDLE_ANALYZE=both before yarn dev or yarn build commands. You can change location of report files in next config file.