4

vinyl-ftp软件包具有功能clean(),但我不确定如何正确使用它。我需要:

  1. 从我的build文件夹中获取所有文件
  2. 将它们放入我的 ftp 服务器上的目标文件夹中
  3. 如果文件在本地不可用,则清理文件

我有以下吞咽任务:

gulp.task('deploy', () => {
  let conn = ftp.create({host:host,user:user,password: password});
  return gulp.src('build/**', {base: './build/', buffer: false })
      .pipe(conn.newer('/path/on/my/server/')) // only upload newer files
      .pipe(conn.dest('/path/on/my/server/'))
      .pipe(conn.clean('build/**', './build/'));
});

1) 和 2) 都可以,但是clean()函数什么也不做

4

2 回答 2

7

vinyl-ftp文档有这样的说法:

conn.clean(globs, local[, options])

Globs 远程文件,测试它们是否在本地可用,<local>/<remote.relative>如果不可用则删除它们。

请注意,它需要FTP 服务器上的远程globs文件的路径。由于您的远程文件位于您必须将该路径指定为您的 glob:/path/on/my/server/

  .pipe(conn.clean('/path/on/my/server/**', './build/'));
于 2017-01-13T20:23:23.247 回答
4

由于我为此付出了很多努力,因此这里的代码可以正常工作。它从服务器中删除除usage文件夹外不存在于本地的所有文件:

var connection = ftp.create({ ... });

connection.clean([
    '/*.*',
    '/!(usage)*',
    '/de/**',
    '/en/**',
    '/images/**',
    '/fonts/**',
    '/json/**',
    '/sounds/**'
], './dist', { base: '/' });

我的文件位于本地./dist文件夹中,远程直接位于根目录 ( /) (使用的 ftp 用户的)。

于 2017-09-12T14:49:54.097 回答