first commit
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
import { mkdir, readdir, writeFile } from 'node:fs/promises';
|
||||
import { dirname, join, relative, resolve, sep } from 'node:path';
|
||||
import { fileURLToPath } from 'node:url';
|
||||
|
||||
const projectRoot = resolve(dirname(fileURLToPath(import.meta.url)), '..');
|
||||
const appRoot = join(projectRoot, 'app');
|
||||
const outputFile = join(projectRoot, 'public', 'meshkee', 'sitemap-config.json');
|
||||
const pageNames = new Set(['page.js','page.jsx','page.ts','page.tsx']);
|
||||
|
||||
async function findPages(directory) {
|
||||
const entries = await readdir(directory,{withFileTypes:true});
|
||||
const pages=[];
|
||||
for(const entry of entries){
|
||||
const full=join(directory,entry.name);
|
||||
if(entry.isDirectory()) pages.push(...await findPages(full));
|
||||
else if(pageNames.has(entry.name)) pages.push(full);
|
||||
}
|
||||
return pages;
|
||||
}
|
||||
|
||||
function toRoute(file) {
|
||||
const segments=relative(appRoot,dirname(file)).split(sep).filter(Boolean);
|
||||
if(segments.some(segment=>segment.startsWith('[')||segment.startsWith('(')||segment==='api'))return null;
|
||||
return segments.length?`/${segments.join('/')}`:'/';
|
||||
}
|
||||
|
||||
const priorities={ '/':1, '/portfolios':.9, '/ourservices':.8, '/blog':.8, '/aboutus':.7, '/contactus':.6 };
|
||||
const routes=(await findPages(appRoot)).map(toRoute).filter(Boolean).sort((a,b)=>a==='/'?-1:a.localeCompare(b));
|
||||
const staticPages=[...new Set(routes)].map(path=>({path,...(path==='/'?{changefreq:'weekly'}:{}),priority:priorities[path]??.5}));
|
||||
await mkdir(dirname(outputFile),{recursive:true});
|
||||
await writeFile(outputFile,`${JSON.stringify({baseUrl:'https://sanazgoodarzi.ir',staticPages},null,2)}\n`,'utf8');
|
||||
console.log(`Generated Meshkee sitemap config with ${staticPages.length} static routes.`);
|
||||
Reference in New Issue
Block a user