in scripts/sync-docs.js [164:206]
async function replaceMDElements(project, path, branch = 'master') {
const allMDFilePaths = path.map((p) => `${p}/**/*.md`);
// replace the image urls inside markdown files
const imageOptions = {
files: allMDFilePaths,
// NOTE: just replace the url begin with ../assets/images ,
// then can replace with absolute url path
from: /(\.\.\/)+assets\/images\/[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]/g,
to: (match) => {
const imgPath = match.replace(/\(|\)|\.\.\/*/g, '');
const newUrl = `https://raw.githubusercontent.com/apache/${project}/${branch}/docs/${imgPath}`;
log(`${project}: ${match} 👉 ${newUrl}`);
return newUrl;
},
};
// replace the markdown urls inside markdown files
const markdownOptions = {
files: allMDFilePaths,
from: RegExp(`\\[.*\\]\\((\\.\\.\\/)*(${languages.join('|')})\\/.*\\.md\\)`, 'g'),
to: (match) => {
const markdownPath = match.replace(/\(|\)|\.\.\/*|\[.*\]|\.\//g, ''); // "en/latest/discovery/dns.md"
const lang = markdownPath.split('/')[0];
const urlPath = markdownPath.replace(
RegExp(`(${languages.join('|')})\\/latest\\/|\\.md`, 'g'),
'',
); // "discovery/dns"
const projectNameWithoutPrefix = project === 'apisix' ? 'apisix' : project.replace('apisix-', '');
const newUrl = match.replace(
/\]\(.*\)/g,
`](https://apisix.apache.org${
lang === 'en' ? '' : `/${lang}`
}/docs/${projectNameWithoutPrefix}/${urlPath})`,
);
log(`${project}: ${match} 👉 ${newUrl}`);
return newUrl;
},
};
await replace(imageOptions);
await replace(markdownOptions);
}