UNPKG

vitepress-plugin-sidebar-permalink

Version:
2 lines (1 loc) 1.94 kB
import a from"fs";import d from"path";import y from"gray-matter";import{g as u,j as S,c as k}from"./shared/vitepress-plugin-sidebar-permalink.vV1C6G2U.mjs";export{a as getTitleFromMd,d as isExternalLink,i as isIllegalIndex,b as isSome,l as logger}from"./shared/vitepress-plugin-sidebar-permalink.vV1C6G2U.mjs";import"vite";import"picocolors";function O({docsRoot:r,output:n,ignoreDirs:c=[]}){const p=u(r,r,c),l={};for(const t of p){const s=d.join(r,t),o=a.readFileSync(s,"utf-8"),m=y(o).data;let e="";typeof m.permalink=="string"&&m.permalink.trim()?(e=m.permalink.trim(),e.startsWith("/")&&(e=e.slice(1)),e.endsWith("/")&&(e=e.slice(0,-1)),e=e+".md"):(e=t.replace(/\\/g,"/").replace(/\.md$/,""),e=e.replace(/^\/+/g,"").replace(/\/+$/g,""),e=e+".md"),l[t]=e}const i={};for(const t of Object.keys(l))c.some(s=>t.split("/").includes(s))||(i[t]=l[t]);const f=d.dirname(n);a.existsSync(f)||a.mkdirSync(f,{recursive:!0});let g=!0;if(a.existsSync(n))try{const t=a.readFileSync(n,"utf-8"),s=JSON.parse(t),o=s.rewrites||{},m=Object.keys(o),e=Object.keys(i);JSON.stringify(m)===JSON.stringify(e)&&JSON.stringify(o)===JSON.stringify(i)&&JSON.stringify(s._meta||{docsRoot:"",ignoreDirs:[]})===JSON.stringify({docsRoot:r,ignoreDirs:c})&&(g=!1)}catch{}return g&&(a.writeFileSync(n,JSON.stringify({rewrites:i,_meta:{docsRoot:r,ignoreDirs:c}},null,4),"utf-8"),S.info(`Rewrites generated at ${n}`)),i}const w=O;function j(r={}){const n=r.root??"docs",c=r.dir??d.join("docs","articles"),p=r.rewritesPath??d.join("docs","rewrites.json"),l=[".vitepress","node_modules","public","dist"],i=Array.from(new Set([...r.ignoreDirs??[],...l]));let f=!1,g=!1;return{name:"vitepress-plugin-sidebar-permalink",config(t){if(f)return;f=!0;const s=k(c,i),o=t.vitepress?.site?.themeConfig??{};o.loginInfo??={},o.loginInfo.List=s,t.vitepress.site.themeConfig=o},configureServer(){g||(g=!0,w({docsRoot:n,output:p,ignoreDirs:i}))}}}export{j as default,u as getAllMdFiles};