plugin-reading-time

Gungnir
2020-03-26
3 min

npm github license

Plugin @renovamen/vuepress-plugin-reading-time for counting words and estimating reading time in VuePress. Compare to other similar VuePress plugins, this plugin supports:

  • Setting reading speed for English and Chinese separately
  • Excluding all content inside code blocks or tex blocks

# Install

yarn add @renovamen/vuepress-plugin-reading-time
# or
npm install @renovamen/vuepress-plugin-reading-time

Then add it to your .vuepress/config.js:

module.exports = {
  plugins: [
    [
      '@renovamen/vuepress-plugin-reading-time'
    ]
  ]
}

# Usage

The readingTime data can be accessed by:

$page.readingTime

An example readingTime data:

{
  minutes: 12,
  words: 3500
}

You can override by specifying readingTime data in frontmatter

title: Hello Word
readingTime: { minutes: 3, words: 1500 }

# Options

# excludes

Exclude pages by their path via a regular expression. This tests for both path and regularPath. Will be ignored if includes is specified.

  • Type: Array<string>
  • Default: []

Example:

plugins: [
  [
    "@renovamen/vuepress-plugin-reading-time", {
      excludes: ["/tags/.*", "/links/"]
    }
  ]
]

# includes

An allowlist of all pages that should be computed word count and reading time for. Includes pages by their path via a regular expression, tests for both path and regularPath.

If includes is specified, excludes will be ignored.

  • Type: Array<string>
  • Default: []

Example:

plugins: [
  [
    "@renovamen/vuepress-plugin-reading-time", {
      includes: ["/docs/.*"]
    }
  ]
]

# wordsPerMinuteCN

The number of Chinese words per minute a user can read.

  • Type: int
  • Default: 300

Example:

plugins: [
  [
    '@renovamen/vuepress-plugin-reading-time', {
      wordsPerMinuteCN: 500
    }
  ]
]

# wordsPerMinuteEN

The number of English words per minute a user can read.

  • Type: int
  • Default: 160

Example:

plugins: [
  [
    '@renovamen/vuepress-plugin-reading-time', {
      wordsPerMinuteEN: 200
    }
  ]
]

# excludeCodeBlock

Exclude all content inside code blocks or not.

  • Type: boolean
  • Default: false

Example:

plugins: [
  [
    '@renovamen/vuepress-plugin-reading-time', {
      excludeCodeBlock: true
    }
  ]
]

# excludeTexBlock

Exclude all content inside tex blocks or not.

  • Type: boolean
  • Default: false

Example:

plugins: [
  [
    '@renovamen/vuepress-plugin-reading-time', {
      excludeTexBlock: true
    }
  ]
]

# License

MIT