Plugin @renovamen/vuepress-plugin-reading-time@next
for counting words and estimating reading time in VuePress 2. 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
Demo (see the number beside the clock icon)
# pnpm
pnpm install @renovamen/vuepress-plugin-reading-time@next
# yarn
yarn add @renovamen/vuepress-plugin-reading-time@next
# npm
npm install @renovamen/vuepress-plugin-reading-time@next
Then add it to your .vuepress/config.js
:
const { readingTimePlugin } = require("@renovamen/vuepress-plugin-reading-time");
module.exports = {
plugins: [
readingTimePlugin()
]
}
The readingTime
data can be accessed by:
import { pageData } from "@vuepress/client";
console.log(pageData.value.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 }
Exclude pages by their path via a regular expression. Will be ignored if includes
is specified.
- Type:
Array<string>
- Default:
[]
Example:
plugins: [
readingTimePlugin({
excludes: ["/docs/.*", "/posts/hello-word.html"]
})
]
An allowlist of all pages that should be computed word count and reading time for. Includes pages by their path via a regular expression.
If includes
is specified, excludes
will be ignored.
- Type:
Array<string>
- Default:
[]
Example:
plugins: [
readingTimePlugin({
includes: ["/docs/.*"]
})
]
The number of Chinese words per minute a user can read.
- Type:
int
- Default:
300
Example:
plugins: [
readingTimePlugin({
wordsPerMinuteCN: 500
})
]
The number of English words per minute a user can read.
- Type:
int
- Default:
160
Example:
plugins: [
readingTimePlugin({
wordsPerMinuteEN: 200
})
]
Exclude all content inside code blocks or not.
- Type:
boolean
- Default:
false
Example:
plugins: [
readingTimePlugin({
excludeCodeBlock: true
})
]
Exclude all content inside tex blocks or not.
- Type:
boolean
- Default:
false
Example:
plugins: [
readingTimePlugin({
excludeTexBlock: true
})
]