Можно ли игнорировать файлы при копировании каталогов в генераторе йомена?

Я пытаюсь написать генератор йомена, и в какой-то момент мне нужно скопировать файлы/папки репозитория github в текущий рабочий каталог, например:

this.remote('owner', 'repo', function (err, remote) {
    remote.directory('.', '.');
});

Однако я хочу игнорировать некоторые файлы в этом репозитории, возможно ли это сделать? Я обнаружил, что за это отвечает функция, но это не совсем понятно. способ сделать это, есть функция process, которую вы можете передать, но я не уверен, что вы можете «отменить» копирование файла, если он соответствует определенному шаблону.


person Javier Villanueva    schedule 28.03.2016    source источник


Ответы (2)


Вы должны полагаться на this.fs объект, а не на старые методы устаревших файлов.

Вспомогательные методы в this.fs поддерживают шаблоны glob, поэтому игнорирование некоторых файлов становится тривиальным.

Вы можете узнать больше о файловой системе Yeoman здесь: http://yeoman.io/authoring/file-system.html

person Simon Boudrias    schedule 28.03.2016
comment
Да, в итоге я использовал метод this.fs.copy и шаблон глобуса для сопоставления файлов в расположении remote.cachePath, чтобы игнорировать те, которые мне не нужны. Не уверен, что это лучший подход, но, похоже, он работает для того, что мне нужно сейчас. - person Javier Villanueva; 29.03.2016
comment
Да, это лучший подход. Дальнейшее улучшение может состоять в том, чтобы просто полагаться на npm для извлечения репозитория вместо того, чтобы делать это во время выполнения с использованием this.remote. - person Simon Boudrias; 29.03.2016
comment
Не могли бы вы уточнить этот последний момент? Мне интересно, как это будет выглядеть. - person Javier Villanueva; 30.03.2016
comment
Только 1_. Потом просто копируете из папки node_modules. - person Simon Boudrias; 30.03.2016
comment
Понятно, что в моем случае репо не всегда то же самое, что и его можно настроить, запросив пользователя, поэтому я думаю, что использование remote достаточно хорошо. - person Javier Villanueva; 31.03.2016

Из документа mem-fs-editor :

Для глобализованного from вы можете дополнительно передать объект options.globOptions, чтобы изменить его поведение при сопоставлении с образцом.

См. параметры здесь:

Пример:

this.fs.copy("<from path>/**", "<to path>",
  {
    globOptions: {
      ignore: [
        globs to ignore...
      ]
    }
  }
);
person Adam Bennett    schedule 16.01.2019