mirror of
https://github.com/facebook/docusaurus.git
synced 2025-06-08 13:52:36 +02:00
feat: allow custom docsUrl & custom permalink
This commit is contained in:
parent
185f7b1ed1
commit
b99605f725
12 changed files with 270 additions and 177 deletions
|
@ -36,14 +36,17 @@ function getVersion(filepath, refDir, env) {
|
|||
return undefined;
|
||||
}
|
||||
|
||||
module.exports = async function processMetadata(source, refDir, env, order) {
|
||||
module.exports = async function processMetadata(
|
||||
source,
|
||||
refDir,
|
||||
env,
|
||||
order,
|
||||
siteConfig
|
||||
) {
|
||||
const filepath = path.resolve(refDir, source);
|
||||
const fileString = await fs.readFile(filepath, 'utf-8');
|
||||
const {metadata} = parse(fileString);
|
||||
|
||||
/* source (relative to refDir) */
|
||||
metadata.source = source;
|
||||
|
||||
/* default id is the file name */
|
||||
if (!metadata.id) {
|
||||
metadata.id = path.basename(source, path.extname(source));
|
||||
|
@ -63,11 +66,9 @@ module.exports = async function processMetadata(source, refDir, env, order) {
|
|||
const langPart = (language && `${language}/`) || '';
|
||||
|
||||
/* version */
|
||||
const defaultLangTag = idx(env, ['translation', 'defaultLanguage', 'tag']);
|
||||
let versionRefDir = refDir;
|
||||
if (
|
||||
language &&
|
||||
language !== idx(env, ['translation', 'defaultLanguage', 'tag'])
|
||||
) {
|
||||
if (language && language !== defaultLangTag) {
|
||||
versionRefDir = path.join(refDir, language);
|
||||
}
|
||||
const version = getVersion(filepath, versionRefDir, env);
|
||||
|
@ -104,8 +105,37 @@ module.exports = async function processMetadata(source, refDir, env, order) {
|
|||
}
|
||||
}
|
||||
|
||||
/* Build the permalink without baseUrl */
|
||||
metadata.permalink = `docs/${langPart}${versionPart}${metadata.id}`;
|
||||
/*
|
||||
The docs file source
|
||||
e.g: `@docs/hello.md` or `@versioned_docs/version-1.0.0/hello.md`
|
||||
*/
|
||||
if (language && language !== defaultLangTag) {
|
||||
metadata.source = `@translated_docs/${source}`;
|
||||
} else if (version && version !== 'next') {
|
||||
metadata.source = `@versioned_docs/${source}`;
|
||||
} else {
|
||||
metadata.source = `@docs/${source}`;
|
||||
}
|
||||
|
||||
/* Build the permalink */
|
||||
const {baseUrl, docsUrl = 'docs'} = siteConfig;
|
||||
|
||||
/*
|
||||
if user has own custom permalink defined in frontmatter
|
||||
e.g: :baseUrl:docsUrl/:langPart:versionPartendiliey/:id
|
||||
*/
|
||||
if (metadata.permalink) {
|
||||
metadata.permalink = metadata.permalink
|
||||
.replace(/:baseUrl/, baseUrl)
|
||||
.replace(/:docsUrl/, docsUrl)
|
||||
.replace(/:langPart/, langPart)
|
||||
.replace(/:versionPart/, versionPart)
|
||||
.replace(/:id/, metadata.id);
|
||||
} else {
|
||||
metadata.permalink = `${baseUrl}${docsUrl}/${langPart}${versionPart}${
|
||||
metadata.id
|
||||
}`;
|
||||
}
|
||||
|
||||
/* if version */
|
||||
if (version && version !== 'next') {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue