Хуки

Хуки — это скрипты, которые автоматически запускаются перед генерацией сайта и после нее. С их помощью можно, например, скачивать внешний контент, обрабатывать изображения и выполнять другие требовательные к ресурсам задачи. Хуки можно писать на любом языке программирования.


Настройка

Для использования хуков в директории сайта нужно создать поддиректорию hooks, в которую нужно положить соответвующие скрипты.

При запуске хука в первую очередь будут запущены файлы из директории hooks с именем, соответствующим имени хука, независимо от расширения, затем файлы из директории hooks/<имя хука>.d в алфавитном порядке. Для хуков с расширениями .js, .mjs и .cjs запускается процесс node, другие типы просто запускаются на выполнение т. е., должны быть исполняемыми.

Рабочей директорией скрипта будет директория сайта, дополнительная информация (см. ниже) будет передана на стандартный ввод. Вывод хуков буферизуется и выводится после завершения.

Доступные хуки

before

Запускается перед генерацией.

after

Запускается после завершения генерации, на стандартный ввод получает выходную директорию. В node можно использовать так:

// hooks/after.d/myhook.js
process.stdio.on("data" , 
(d)=>{
  let output_dir = d.toString(); 
  // do stuff
})

Или в скрипте оболочки, публикация через surge.sh:

#!/usr/bin/env sh
# hooks/after.sh
read PRJ_DIR  # Прочли ввод
surge --project $PRJ_DIR