Как скопировать папку через SSH с Gulp?

В последнее время я экспериментировал с глотком и добился большого успеха, но теперь я в тупике.

У меня есть все, и я хочу загрузить папку потом. Я создал deploy Задача для этого с помощью gulp-scp2:

gulp.task('deploy', ['clean', 'build'], function() {
    var privateKeyPath = getUserHome() + '/.ssh/id_rsa';

    gulp.src('public/dist')
        .pipe(scp({
            host: 'myhost',
            username: 'user',
            dest: '/home/user/test',
            agent: process.env['SSH_AUTH_SOCK'],
            agentForward: true,
            watch: function(client) {
                client.on('write', function(o) {
                    console.log('write %s', o.destination);
                });
            }
        })).on('error', function(err) {
            console.log(err);
        });
});

К сожалению, когда я делаю это, я получаю следующую ошибку:

Error: Content should be buffer or file descriptor

Как я могу скопировать папку через SSH, используя gulp?

1 ответ

Решение

В конце концов я нашел решение, используя узел scp2 библиотека:

scpClient = require('scp2');

gulp.task('scp', [], function (cb) {
    scpClient.scp('local_folder', {
        "host": "remote_host",
        "port": "remote_port",
        "username": "username_on_remote",
        "path": "/path/on/remote",
        "agent": process.env["SSH_AUTH_SOCK"],
        "agentForward": true
    }, cb)
});

Как и в предыдущем ответе, я закончил использовать версию узла напрямую, этот будет работать в режиме gulp 4+:

Сначала установите lib (убедитесь, что вы устанавливаете локально в проекте, глобальная версия не работает для использования в файле gulp):

 npm install scp2

Затем в файле gulp:

 var scpClient = require('scp2');


 function deploySCP2(){
    return scpClient.scp(paths.buildAll, {
       "host": "host",
       "username": "username",
       "password": "password",
       "path": "path"
    }, function(err) {  })
 }

Это будет работать сразу.

Другие вопросы по тегам