48 lines
1.3 KiB
JavaScript
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);
|
|
});
|