russ_react/scripts/generate-routes.js

48 lines
1.3 KiB
JavaScript

import fs from "fs";
import axios from "axios";
async function main() {
const API_URL = 'http://localhost:5000';
async function fetchArticlePaths() {
try {
const response = await axios.get(`${API_URL}/api/articles/sitemap`);
return response.data.articles;
} catch (error) {
console.error('Ошибка при получении путей статей:', error.message);
return [];
}
}
const articles = await fetchArticlePaths();
// Базовые маршруты
const routes = ["/", "/about", "/articles"];
// Добавляем статьи
for (const row of articles) {
routes.push(`/article/${row.id}`);
}
// Загружаем шаблон react-snap конфигурации
const baseConfig = {
inlineCss: true,
source: "dist",
skipThirdPartyRequests: true,
routes
};
// Сохраняем в отдельный файл
fs.writeFileSync("./react-snap.config.js",
`export default ${JSON.stringify(baseConfig, null, 2)};\n`
);
console.log(`✅ Добавлено ${routes.length} маршрутов для react-snap`);
}
main().catch(err => {
console.error("❌ Ошибка:", err);
process.exit(1);
});