Gulp vinyl ftp - 如何使用清洁功能?

时间:2017-01-13 16:21:34

标签: node.js ftp gulp vinyl vinyl-ftp

vinyl-ftp包有一个函数clean(),但我不确定如何正确使用它。我需要:

  1. 从我的build文件夹
  2. 获取所有文件
  3. 将它们放入我的ftp服务器上的目标文件夹
  4. 清除文件(如果它们在本地不可用)
  5. 我有以下gulp任务:

    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()函数什么都不做

2 个答案:

答案 0 :(得分:7)

vinyl-ftp文档have this to say

  

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

     

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

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

  .pipe(conn.clean('/path/on/my/server/**', './build/'));

答案 1 :(得分:2)

由于我为此付出了很多努力,所以这里是一个有效的代码和平。它会从服务器中删除除usage文件夹以外不存在的所有文件:

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

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

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