Предистория

Создавал сайт при помощи Hugo, но приходилось делать некоторые рутинные манипуляции, которые хотелось как то автоматизировать. Перед генерацией сайта все время нужно было удалять папку public иначе старые файлы или папки, которых уже нет в обновленном сайте оставались в каталоге. Потом после генерации сайта нужно было его переносить на сервер в каталог виртуального хоста, который так же приходилось полностью чистить, т.е. удалять ве файлы и папки содержащиеся в нем.

Задавшись вопросом - “А ведь всего этого можно не делать и давно уже есть готовые решения, ну или хотя бы инструменты”.

Очистка каталога public

Начав изучать данный вопрос нашел команду, которая делает, то что не надо все время удалять перед генерацией сайта каталог public.

hugo --cleanDestinationDir

В таком исполнении все файлы или каталоги не присутствующие при генерации сайта удаляются, таким образом избавляемся от мусора.

А еще проще сразу прописать в конфиге генерации сайта такую строчку:

cleanDestinationDir: true

Синхронизация в Visual Studio Code через SFTP

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

Расширение SFTP для Visual Studio Code

Подумав, что в любом случае должна быть программа работающая из Visual Studio Code, которая синхронизирует содержимое указанного каталога с каталогом виртуального хоста, к серверу естественно есть доступ по SSH. И такое приложение нашлось, причем это гораздо лучше работает (гораздо меньше телодвижений мышкой надо делать), чем все то же самое делать при помощи FileZilla

То что доктор прописал: SFTP

Установка расширения SFTP для Visual Studio Code

В принципе все написано в документации, приведу краткие манипуляции в Visual Studio Code:

  • Скопировать ext install Natizyskunk.sftp Ctrl+C
  • Нажать сочетание клавиш Ctrl+P Ctrl+V Enter

Настройка расширения SFTP для Visual Studio Code

  • Открыть папку с сайтом в Visual Studio Code
  • Нажать сочетание клавиш Ctrl+Shift+P
  • Набрать SFTP:config

В открывшемся файле вставить (пока временную) такую конфигурацию:

{
    "name": "HTTP Server wildserver.ru",
    "context": "public",
    "host": "ip-server",
    "protocol": "sftp",
    "port": 22,
    "username": "user",
    "remotePath": "/home/wildserver.ru",
    "uploadOnSave": false,
    "useTempFile": false,
    "openSsh": false,
    "syncOption": {
        "delete": true,
        "update": true
      }
}

Это работающий конфиг, который удаляет устаревшие файлы и папки и добавляет, только новые. Синхронизируя папку public, в которой генерируется сайт, с папкой на сервере из которой берутся страницы сайта для отображения в браузере.

Добавить в .gitignore

Что бы в репе не светить данными о своем сервере добавить запись в .gitignore - sftp.json

Сгенерировать сайт

hugo

Запуск расширения SFTP для Visual Studio Code

Пока полуавтомат, кнопки все таки нажимать надо, так же как и двигать курсором мышки. Но скоро будет все автоматизировано.

Что бы произвести синхронизацию каталогов на локальном хосте и сервере надо:

  • Нажать сочетание клавиш Ctrl+Shift+P
  • Набрать SFTP и из списка выбрать SFTP:Sync Local -> Remote должен высветиться путь к папке, где живет сгенерированный сайт локально. Выбрать путь.
  • Ввести пароль пользователя чьё имя указано в конфиге.
  • Начнется синхронизация.