首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用gulp sftp仅上传已更改的文件

使用gulp sftp仅上传已更改的文件
EN

Stack Overflow用户
提问于 2014-08-03 10:23:59
回答 3查看 3.1K关注 0票数 2

我有以下任务:

代码语言:javascript
复制
gulp.task('sync-frontend', /*['build-frontend'],*/ function()
{

    if(config.layout.frontend.syncOnBuild)
        return gulp
            .src(config.layout.frontend.distDir + '/**')
            .pipe(changed(config.layout.frontend.distDir, {hasChanged: changed.compareSha1Digest}))
            //.pipe(debug())
            .pipe(gulp.dest(config.layout.frontend.distDir))
            .pipe(sftp
            ({

                host: config.sftp.host,
                port: config.sftp.port,
                user: config.sftp.user,
                pass: config.sftp.pass,
                remotePath: (config.layout.frontend.remotePath ? config.layout.frontend.remotePath : config.sftp.remotePath )

            }));

});

Httpdocs值是‘config.layout.frontend.distDir’。

问题是没有上传任何文件,不管它们是否被更改(我已经尝试在默认情况下保留hasChange选项的gulp-changed。我总是得到以下输出:

代码语言:javascript
复制
[20:45:52] Using gulpfile /Storage/Portable/Sync/Projects/Prataria/web-prataria/gulpfile.js
[20:45:52] Starting 'sync-frontend'...
[20:45:52] gulp-sftp: No files uploaded
[20:45:52] Finished 'sync-frontend' after 503 ms

有什么想法吗?

EN

回答 3

Stack Overflow用户

发布于 2014-08-24 08:14:11

我遇到了这个问题,发现gulp.src上的格式需要加上./作为前缀才能找到正确的文件夹。因此,尝试将./httpdocs作为config.layout.frontend.distDir的值。

票数 0
EN

Stack Overflow用户

发布于 2016-03-15 22:02:03

你可以将-sftp和另一个库一起使用,比如“gulp changed”或"gulp-watch“。

票数 0
EN

Stack Overflow用户

发布于 2019-10-05 14:48:56

尝试使用vinyl-ftp库。newer函数可用于仅上传较新的文件。该库的自述文件甚至包括一个示例Gulp任务,它在实际操作中显示了这一点:

代码语言:javascript
复制
var gulp = require( 'gulp' );
var gutil = require( 'gulp-util' );
var ftp = require( 'vinyl-ftp' );

gulp.task( 'deploy', function () {

    var conn = ftp.create( {
        host:     'mywebsite.tld',
        user:     'me',
        password: 'mypass',
        parallel: 10,
        log:      gutil.log
    } );

    var globs = [
        'src/**',
        'css/**',
        'js/**',
        'fonts/**',
        'index.html'
    ];

    // using base = '.' will transfer everything to /public_html correctly
    // turn off buffering in gulp.src for best performance

    return gulp.src( globs, { base: '.', buffer: false } )
        .pipe( conn.newer( '/public_html' ) ) // only upload newer files
        .pipe( conn.dest( '/public_html' ) );

} );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25101049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档