const path = require('path'); const fs = require('fs'); const MarkdownIt = require('markdown-it'); const { tabs, isExternal } = require('../docs/.vuepress/utils'); const domain = 'https://zh.uniapp.dcloud.io' const links = [] const xmlBefore = ` ` const xmlAfter = `\n ` tabs.forEach(tab => { parseBar(path.join(__dirname, '../docs', tab, '_sidebar.md')) }) const xmlItems = links.map(url => { return ` ${url} ` }) fs.writeFileSync('./root/sitemap.xml', xmlBefore + xmlItems.join('\n') + xmlAfter) function parseBar(file) { new MarkdownIt() .parse(fs.readFileSync(file, { encoding: 'utf-8' })) .forEach(token => { if (token.type === 'inline') { let [_, text, link] = token.content.match(/\[(.+?)\]\((.+?)\)/) || token.content.match(/(.+)/) if (link && !isExternal(link)) { link = domain + path.join('/', link.replace(/\.md\b/, '') .replace(/\bREADME\b/, '') .replace(/\/index/, '/') .replace(/\?id=/, '#')) .replace(/\\/g, '/') links.push(link) } } }) }