Next.js + Inferno
Use Inferno :fire: with Next.js to get even faster :zap: rendering.
Installation
npm install --save next-inferno inferno inferno-compat inferno-clone-vnode inferno-create-class inferno-create-element
or
yarn add next-inferno inferno inferno-compat inferno-clone-vnode inferno-create-class inferno-create-element
Usage
Create a next.config.js
in your project
const withInferno = require('next-inferno')
module.exports = withInferno()
Then create a server.js
require('next-inferno/alias')()
const { createServer } = require('http')
const next = require('next')
const app = next({ dev: process.env.NODE_ENV !== 'production' })
const handle = app.getRequestHandler()
const port = process.env.PORT || 3000
app.prepare()
.then(() => {
createServer(handle)
.listen(port, () => {
console.log(`> Ready on http://localhost:${port}`)
})
})
Then add or change "scripts" section of your package.json
:
...
"scripts": {
"dev": "node server.js",
"build": "next build",
"start": "NODE_ENV=production node server.js"
},
...
Optionally you can add your custom Next.js configuration as parameter
const withInferno = require('next-inferno')
module.exports = withInferno({
webpack(config, options) {
return config
}
})
TypeScript support
Looking for TypeScript support? Just follow that easy steps to use it in your Next projects:
- Install
typescript
and @zeit/next-typescript
(aslo you can use next-awesome-typescript
for perfomance reasons):
npm install --save typescript @zeit/next-typescript
or
yarn add typescript @zeit/next-typescript
- Edit
next.config.js
:
const withInferno = require('next-inferno')
const withTypescript = require('@zeit/next-typescript')
module.exports = withInferno(withTypescript())
- Create 'tsconfig.json' file:
{
"compileOnSave": false,
"compilerOptions": {
"target": "esnext",
"module": "esnext",
"jsx": "preserve",
"allowSyntheticDefaultImports": true,
"allowJs": true,
"moduleResolution": "node",
"sourceMap": true,
"removeComments": false,
"baseUrl": ".",
"lib": [
"dom",
"es2015",
"es2016"
]
}
}
- Write code :fire:
Check on compile
By default, next's TypeScript plugin only transpiles your code without type checks. It means that you can see type errors only in your IDE or code editor (for example VS Code can do it out of the box).
If you want to enable typechecks on compile to see type errors in terminal or browser, make the following changes in 'next.config.js':
const withInferno = require('next-inferno')
const withTypescript = require('@zeit/next-typescript')
module.exports = withInferno(withTypescript({
webpack(config, options) {
return config
},
typescriptLoaderOptions: {
transpileOnly: false
}
}))