Плагины и массивы Gulp@next?

193
29 апреля 2018, 21:18

Cтолкнулся с такой проблемой. Возникла надобность написать функцию для задач gulp, в которую передается объект вида:

const 
    gulp = require('gulp'),
    $ = require('gulp-load-plugins')();
let 
  envMode = {
    dev: {
      mode: {
       name: "dev"
      }
      task: {
        pug: {
          name: "pug",
          src: "./src/**/*.pug",
          dest: "./build",       
          plugins: [
            $.pug({pretty:true}),
            $.rename({extname:'.php'})
          ] 
        }
      }
    }
  }

Код функции:

let 
  builder = (mode, task) => {
    gulp
      .task(mode.name+':'+task.name, () => {
        let
          plugStart = [
            gulp.src(task.src),
            $.notify('start')
          ],
          plugEnd = [
            $.notify('end'),
            gulp.dest(task.dest)
          ]
        return $.pipe([
          ...plugStart,
          ...task.plugins,
          ...plugEnd
        ])
      });
  } 

В итоге имеем ошибку возникающую при сборке из gulp.watch:

let watcher = (mode, task) => { 
  gulp.watch(mode.name+':watch:'+task.name, gulp.series(mode.name+':'+task.name)); 
}

Error: write after end at writeAfterEnd (D:\OSPanel\domains\jub\node_modules\readable-stream\lib_stream_writable.js:288:12) at DestroyableTransform.Writable.write (D:\OSPanel\domains\jub\node_modules\readable-stream\lib_stream_writable.js:332:20) at DestroyableTransform.ondata (D:\OSPanel\domains\jub\node_modules\readable-stream\lib_stream_readable.js:619:20) at DestroyableTransform.emit (events.js:159:13) at addChunk (D:\OSPanel\domains\jub\node_modules\readable-stream\lib_stream_readable.js:291:12) at readableAddChunk (D:\OSPanel\domains\jub\node_modules\readable-stream\lib_stream_readable.js:278:11) at DestroyableTransform.Readable.push (D:\OSPanel\domains\jub\node_modules\readable-stream\lib_stream_readable.js:245:10) at DestroyableTransform.Transform.push (D:\OSPanel\domains\jub\node_modules\readable-stream\lib_stream_transform.js:148:32) at DestroyableTransform.notify [as _transform] (D:\OSPanel\domains\jub\node_modules\gulp-notify\lib\notify.js:41:14) at DestroyableTransform.Transform._read (D:\OSPanel\domains\jub\node_modules\readable-stream\lib_stream_transform.js:184:10)

Код gulp-pipe

    module.exports = function pipe(stream, tubes) { 
  tubes = tubes || stream.slice(1); 
  return tubes.reduce(function(stream, tube) { return stream.pipe(tube); }, Array.isArray(stream) ? stream[0] : stream); 
};

Общая задача выглядит так:

gulp.task('dev', gulp.series('dev:pug', gulp.parallel('dev:watch:pug')));

В череде экспериментов не копирование массива внутрь функции а-ля plug = task.plugins, ни изменения переменных на let/const/var, ни замена плагина gulp-pipe на рекомендованный gulp@4.0.0 pump, понижение версии gulp, ничего не решает проблему, если массив из объекта task.plugins поместить внутрь функции всё работает. Уже не знаю что можно сделать и исполнение менял с series на parallel.

READ ALSO
Как воспроизвести видео сразу после его загрузки в ActionScript?

Как воспроизвести видео сразу после его загрузки в ActionScript?

Как воспроизвести видео сразу после его загрузки в ActionScript?

195
Как достать из JSON строку и файл? (java)

Как достать из JSON строку и файл? (java)

Значит в JS запаковываю изображение и нужную мне строку отправляю как json:

211
Оставить только 1 страну в коде mango callback

Оставить только 1 страну в коде mango callback

На сайт поставили код mango office callback ( https://wwwmango-office

211