Skip to content

posrix/prerender-seo

Repository files navigation

prerender-seo

Prerender HTML files using Puppeteer.

Install

npm i prerender-seo -D

Usage

const path = require('path')
const prerender = require('prerender-seo')

const files = [
  '/index.html'
]

prerender(
  path.resolve(__dirname, './dist'),
  files,
  {
    // options
  }
)

Test

The test case use a vue-cli generated project

npm run test

Options

Name Type Default Description
sourceDir {String} - Source directory of static files
files {Array} - HTML Files to prerender
options.destDir {String} *_prerender Destination directory to store the result
options.proxyTable {Array} [] Proxy to forward any http request that match the config
options.navigationTimeout {Number} 30000 Define the timeout of any navigation operations
options.resourceInterception {Array} [] Define the regular expression of any resource will be aborted

sourceDir

prerender(
  path.resolve(__dirname, '../dist')
)

files

prerender(
  files: [
    'index.html',
    'about.html',
    'product.html'
  ]
)

options.destDir

Define the destination directory. If you want to replace the source directory, just set the same path as sourceDir.

prerender(
  path.resolve(__dirname, '../dist'),
  files: [
    'index.html',
    'about.html',
    'product.html'
  ],
  {
    destDir: path.resolve(__dirname, '../dist')
  }
)

options.proxyTable

prerender(
  path.resolve(__dirname, '../dist'),
  files: [
    'index.html',
    'about.html',
    'product.html'
  ],
  {
    proxyTable: {
      context: '/api',
      proxy: {
        host: 'example.com',
        port: '80',
        protocol: 'http'
      }
    }
  }
)

options.navigationTimeout

Define the timeout after which any navigation operations will stop trying. (in milli-secs)

prerender(
  path.resolve(__dirname, '../dist'),
  files: [
    'index.html',
    'about.html',
    'product.html'
  ],
  {
    navigationTimeout: 60000
  }
)

options.resourceInterception

Define the regular expression to match any resource url will be aborted before request. The left hand in the array is RegExp pattern, the right hand is RegExp flag.

prerender(
  path.resolve(__dirname, '../dist'),
  files: [
    'index.html',
    'about.html',
    'product.html'
  ],
  {
    resourceInterception: [
      ['hm.baidu.com', 'g'],
      ['/api/tokenAttach', 'g']
    ]
  }
)