Use ai/nanoid to generate abbreviated post links.
- Compatible with
hexo newto generate ID for new posts. - ID validatation on existing posts to ensure the uniqueness.
- Ability to autofix invalid and conflicted post IDs.
- Event
nanoid:generateis emitted after each ID generation.
Use the variable :nanoid in your permalink configuration.
For example,
# _config.yml
permalink: post/:nanoid/The following list shows the descending precedence of config files. (The first one presented is used.)
- Key
nanoidin<hexo_root>/_config.yml - Key
theme_config.nanoidin<hexo_root>/_config.yml - Key
nanoidin<hexo_root>/themes/<theme_name>/_config.yml - Inline default config
interface HexoNanoIdOptions {
/**
* Autofix invalid or conflicted IDs.
* @default false
*/
autofix: boolean
/**
* Max try to find an unique ID.
* @default 10
*/
maxtry: number | "Infinity"
/**
* Ensure the ID uniqueness when creating a new post,
* which somewhat slow down the new post generation
* since all posts will be loaded and validated.
*
* The uniqueness of the new post ID is not guaranteed if this config is set to `false`.
* Check https://zelark.github.io/nano-id-cc/ for more info about collision probability.
* @default true
*/
check_on_new: boolean
/***********************************/
/*** Configuring nanoid library ***/
/***********************************/
/**
* @default 21
*/
length: number
/**
* @default "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz-"
*/
characters?: string
}Event nanoid:generate is emitted to the Hexo instance with a parameter postId.
You can listen to it as the following snippet.
hexo.on('nanoid:generate', (postId) => {
console.log('New post ID is generated: %s.', postId)
})