Как скопировать папку через 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) { })
}
Это будет работать сразу.