2014-07-08 14 views
8

Ultimamente ho sperimentato con il gulp e ho avuto molto successo, ma ora sono perplesso.Come copiare una cartella su SSH con Gulp?

Ho gulp che costruisce tutto e voglio caricare una cartella in seguito. Ho creato un compito deploy per questo utilizzo 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); 
     }); 
}); 

Purtroppo, quando faccio questo, ottengo il seguente errore:

Error: Content should be buffer or file descriptor 

Come posso copiare una cartella su SSH utilizzando sorso?

+1

Non sembra come 'gulp-scp2' è un plugin sorso valida, dal momento che non è elencato sul [sito gulp ] (http://gulpjs.com/plugins/). Hai provato [gulp-sftp] (https://www.npmjs.org/package/gulp-sftp/)? Sembra una soluzione meglio progettata e dovrebbe raggiungere lo stesso obiettivo. – OverZealous

+0

Perché non usi un repository e spingi lì tutto ciò che vuoi? Penso che sia il modo migliore per distribuire i file in produzione. – avcajaraville

risposta

10

ho fatto finire per trovare una soluzione, sfruttando il nodo scp2 libreria:

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) 
}); 
Problemi correlati