Такие хостинговые площадки, как Vercel, Netlify и т.п., предлагают готовые CLI-решения для Node.js, позволяющие автоматизировать развёртывание сайта из командной строки. Но что делать, если сайт размещён на виртуальном хостинге или на VPS/VDS сервере? Ведь не очень удобно для каждой новой сборки сайта открывать FTP-клиент и загружать сайт на хостинг практически вручную.
Хорошая новость в том, что для такого сценария у меня тоже есть готовое решение для Node.js. Решение основано на подключении к хостингу по защищённому протоколу SFTP, который можно включить на любом хостинге.
ssh2-sftp-client
:npm i -D ssh2-sftp-client
deploy.js
со скриптом для развёртывания:import Client from 'ssh2-sftp-client';
const sftp = new Client();
const local = 'build';
const remote = '/var/www/user/data/www/example.ru/';
sftp
.connect({
host: 'example.ru',
port: '22',
username: 'user',
password: '******'
})
.then(() => {
console.log('delete old...');
return sftp.rmdir(remote, true);
})
.then(() => {
console.log('...done');
sftp.on('upload', (info) => {
console.log(`upload: ${info.source}`);
});
console.log('upload new...');
return sftp.uploadDir(local, remote);
})
.then(() => {
console.log('...done');
return sftp.end();
})
.catch((error) => {
console.log(error);
return sftp.end();
});
Пояснения:
22
.build
, но у различных генераторов она может называться по другому, например dist
./var/.../example.ru
тоже может различаться на разных хостинговых площадках.node deploy
Полная документация по API библиотеки ssh2-sftp-client
по ссылке.