Глоток винила ftp - как использовать чистую функцию?

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() функция ничего не делает

2 ответа

Решение

vinyl-ftp Документы имеют это, чтобы сказать:

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

Globs удаленные файлы, тесты, если они локально доступны на <local>/<remote.relative> и удаляет их, если нет.

Обратите внимание, что globs ожидает путь к удаленным файлам на вашем FTP-сервере. Поскольку ваши удаленные файлы находятся в /path/on/my/server/ Вы должны указать этот путь как ваш глобус:

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

Так как я получил много борьбы с этим, здесь рабочий мир кода. Он удаляет все файлы с сервера, которые не существуют локально, кроме usage папка:

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

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

Мои файлы находятся на ./dist папка и пульт прямо в корневом каталоге (/) (используемого пользователя ftp).

Другие вопросы по тегам