@risingstack/nx-seo
Version:
An express middleware for NX, used for SEO. Works by sending prerendered HTML pages to crawlers.
52 lines (36 loc) • 1.55 kB
Markdown
# nx-seo
An express middleware, that pre-renders [NX](http://nx-framework.com/) apps when the request user-agent is a crawler.
It also removes all the scripts from the page after rendering and before sending the final HTML.
## Installation
```
$ npm install @risingstack/nx-seo
```
## Platform support
NodeJS 6 and above.
## Usage
The below code creates a simple express server for NX. It servers static assets if found.
Then it detects crawler user-agents with the seo middleware and prerenders pages for them.
Finally it server the main page of the app for bootstrapping, if non of the above conditions are met.
```js
const express = require('express')
const app = express()
const server = require('http').createServer(app)
const seo = require('@risingstack/nx-seo')
const port = 8080
const ip = "127.0.0.1"
const mainFile = '/app.html'
app.use(express.static(__dirname))
app.use(seo({ timeout: 5, debug: true }))
app.use((req, res, next) => {
if (req.accepts('html')) res.sendFile(__dirname + mainFile)
})
server.listen(port, ip)
```
## Configuration
You can pass a config object to `seo` as argument. It currently has two options.
`debug` is a boolean, which defaults to false. If you set it to true errors during
the pre-render will be forwarded to the NodeJS console.
`timeout` is a number, which defaults to 0. It applies a timeout to allow pre-rendering deferred
scripts before sending the result. Use it if your page doesn't render for the crawlers.
## Contributing
Bug fixes, tests and new ideas are always welcome. Thanks!