Хуки жизненного цикла плагинов
На этой странице документирован каждый хук жизненного цикла в деталях.
config:resolved (waterfall)
Вызывается после полного разрешения конфигурации. Получает объект конфигурации и может его изменять.
'config:resolved': async (config) => {
config.site.title += ' (изменено)';
return config;
}data:loaded (seq)
Вызывается после загрузки всех данных. Ничего не получает, но контекст содержит полный набор данных.
'data:loaded': async (_, ctx) => {
const { dataset } = ctx;
console.log(`Загружено ${dataset.projects.length} проектов`);
}data:validated (seq)
Вызывается после проверки данных. Используйте это для пользовательской логики валидации.
'data:validated': async (_, ctx) => {
// Пользовательская валидация
}assets:process (seq)
Вызывается перед обработкой ресурсов. Используйте это для изменения или копирования ресурсов.
'assets:process': async (_, ctx) => {
// Обработка ресурсов
}routes:collect (waterfall)
Вызывается во время сбора маршрутов. Может добавлять, удалять или изменять маршруты.
'routes:collect': async (routes) => {
routes.push({
path: '/custom/',
layout: 'detail',
title: 'Пользовательская страница',
});
return routes;
}api:endpoints (waterfall)
Вызывается перед генерацией конечных точек API. Может добавлять пользовательские конечные точки.
'api:endpoints': async (endpoints) => {
endpoints.push({
path: 'custom.json',
generate: async (ctx) => ({ data: 'custom' }),
});
return endpoints;
}render:before (waterfall)
Вызывается перед рендерингом каждой страницы. Получает HTML-строку и может её изменять. Это основной хук для внедрения содержимого в <head>.
'render:before': async (html, ctx) => {
const { route } = ctx;
return html.replace(
'</head>',
`<meta name="custom" content="${route.slug}">\n</head>`
);
}emit (seq)
Вызывается во время фазы эмиссии. Используйте это для записи дополнительных файлов в выходную директорию.
'emit': async (_, ctx) => {
await ctx.emit('custom/data.json', JSON.stringify({ key: 'value' }));
}build:done (seq)
Вызывается после завершения сборки. Используйте это для очистки, уведомлений или отчётов.
'build:done': async () => {
console.log('Сборка завершена!');
}