2

我在 gulp 中有以下任务:

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 )

            }));

});

config.layout.frontend.distDir 值为“httpdocs”。

问题是没有文件被上传,无论它们是否被更改(我已经尝试将 gulp-changed 的​​ hasChange 选项保留为默认值。我总是得到以下输出:

[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

有任何想法吗?

4

3 回答 3

0

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

于 2014-08-24T00:14:11.030 回答
0

您可以将 gulp-sftp 与“gulp-changed”或“gulp-watch”等其他库一起使用。

于 2016-03-15T14:02:02.583 回答
0

尝试使用vinyl-ftp库。该newer功能可用于仅上传较新的文件。该库的 README 甚至包括一个示例 Gulp 任务,它显示了这一点:

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' ) );

} );
于 2019-10-05T06:48:55.903 回答