【问题标题】:How to copy a folder over SSH with Gulp?如何使用 Gulp 通过 SSH 复制文件夹?
【发布时间】:2014-08-29 15:49:38
【问题描述】:

我最近一直在尝试 gulp,并取得了很大的成功,但现在我被难住了。

我已经 gulp 构建了所有内容,然后我想上传一个文件夹。我为此使用gulp-scp2 创建了一个deploy 任务:

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

如何使用 gulp 通过 SSH 复制文件夹?

【问题讨论】:

  • 它看起来不像 gulp-scp2 是一个有效的 gulp 插件,因为它没有在 gulp website 中列出。你试过gulp-sftp吗?它看起来像是一个设计更好的解决方案,并且应该实现相同的目标。
  • 你为什么不使用存储库并将任何你想要的东西推送到那里?我认为这是在生产环境中部署文件的最佳方式。

标签: javascript ssh build scp gulp


【解决方案1】:

作为上一个答案,我直接结束了使用节点版本,这个将以 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) {  })
 }

这将立即生效。

【讨论】:

    【解决方案2】:

    我最终通过利用节点 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)
    });
    

    【讨论】:

      猜你喜欢
      • 2014-12-21
      • 1970-01-01
      • 2015-07-16
      • 1970-01-01
      • 2020-06-10
      • 2016-04-22
      • 2022-01-13
      • 2015-10-23
      相关资源
      最近更新 更多