Причина, по которой плагины gulp не делают, это то, что плагины предназначены для того, чтобы не знать о количестве файлов. Они (почти всегда) видят только один файл за раз, проходя через потоки.
Grunt работает вроде этого (с помощью Less/CSS для простого примера):
- Все Менее Файлы передаются и меньше и обрабатываются, а затем сохраняется в новом месте, как CSS
- После каждый файл обрабатывается Менее, все файлы CSS выполняются через CSS linter
- После того, как каждый файл был литирован, все файлы CSS сжимаются с помощью оптимизатора CSS, а затем сохраняются обратно
- Выполнено.
Каждый шаг должен дождаться полного завершения предыдущего состояния.
Глоток работает больше, как это:
- начать загрузку Меньше файлов.
- Как только файл найден, передать его Less
- Как только будет сделано меньше, запустить CSS в памяти через CSS пуха
- Less теперь начинается на следующий файл, если есть один
- Как только заканчивается ЛИНТЕР, запустить CSS в памяти через оптимизатор
- ЛИНТЕР теперь начинается на следующий файл, если меньше делается
- Теперь напишите файл до места назначения.
- оптимизатор может начать следующий файл после пуха
- Повторить 2-5, пока все файлы были бежать через этот процесс.
Шаги 2-5 все может происходить одновременно, каждый в другом файле.
Это означает, что имеется плагин, который отслеживает количество файлов, которое будет отсчитываться до тех пор, пока поток не закончится, а затем не распечатает его. (Вероятно, это не будет работать на непрерывном потоке, подобном созданному gulp-watch
, потому что эти потоки никогда не заканчиваются.)
Я не видел существующего плагина, который бы это сделал, но вы могли бы сделать его в своем gulpfile в Подобным же образом, чтобы это (непроверенные):
// need to run: npm i --save-dev 'through'
var through = require('through');
function count(message) {
var count = 0;
function countFiles(file) {
count++;
}
function endStream() {
console.log(count + ' ' + message || 'files processed.');
this.emit('end');
}
return through(countFiles, endStream);
};
Используйте это так:
.pipe(jshint('.jshintrc'))
.pipe(jshint.reporter('default'))
.pipe(jshint.reporter('fail'))
.pipe(count('files lint free.'))
Это работает, но не как ожидалось ... [Пожалуйста, смотрите здесь] (https://stackoverflow.com/questions/27331941/how-do-i-count-the-number-of-files-in -a-глотка-поток) –