const generator = (hexo) => ({ posts, pages }) => [ ...posts .filter(({ redirect_from }) => redirect_from) .map((page) => (typeof page.redirect_from === "string" ? [page.redirect_from] : page.redirect_from ).map((redirect) => ({ redirect, page })) ) .reduce((result, current) => [...result, ...current], []), ...pages .filter(({ redirect_from }) => redirect_from) .map((page) => (typeof page.redirect_from === "string" ? [page.redirect_from] : page.redirect_from ).map((redirect) => ({ redirect, page })) ) .reduce((result, current) => [...result, ...current], []), ].map(({ redirect, page }) => ({ path: `${redirect}/index.html`, data: { target: page, redirect_from: redirect, layout: hexo.config.redirect.layout, }, layout: hexo.config.redirect.layout, })); hexo.config.redirect = Object.assign( { enable: true, layout: "redirect", }, hexo.config.redirect ); hexo.extend.generator.register("redirect", generator(hexo)); // module.exports = generator;