2016-07-15 2 views
1

У меня есть следующие Gulpfile.js:Использование Глоток с просьбой

'use strict'; 

const gulp = require('gulp'), 
     request = require('request'); 

const paths = { 
    vendor: [ 
    'https://raw.githubusercontent.com/jquery/jquery-dist/master/dist/jquery.min.js', 
    'https://raw.githubusercontent.com/kenwheeler/slick/master/slick/slick.js' 
    ] 
}; 

gulp.task('vendor', (res) => { 
    const url = request.get(paths.vendor).pipe(res); 
    return gulp.src(url) 
    .pipe(gulp.dest('public/vendor')); 
}); 

gulp.task('default', gulp.parallel('vendor')); 

Я получаю следующее сообщение об ошибке:

Error: options.uri is a required argument 

С помощью этого метода я пытался dicthing менеджеров на стороне клиента пакет, как Бауэр , Есть ли способ использовать request с gulp и перебирать список объектов?

EDIT:

Я поместил этот код для тестирования, возвращает только первую строку из цикла:

gulp.task('vendor',() => { 
    for (let i=0; i<paths.vendor.length; i++) { 
    return console.log(paths.vendor[i]); 
    }; 
}); 

Так же, как:

gulp.task('vendor', (res) => { 
    const url = request.get(paths.vendor[index++]).pipe(res); 
    return gulp.src(url) 
    .pipe(gulp.dest('public/vendor')); 
}); 
+0

'request.GET ({Uri: paths.vendor})' –

+0

Я получил сообщение об ошибке: 'Error: Invalid URI «/» ' – Lanti

ответ

1

request.get работает только на одной URI за один раз, и вы передаете массив, также AFAIK parallel ожидает список задач, а не одну задачу, которая обрабатывает многие предметы. Может быть, это будет работать для вас:

'use strict'; 

const gulp = require('gulp'), 
     request = require('request'); 

const paths = { 
    vendor: [ 
    'https://raw.githubusercontent.com/jquery/jquery-dist/master/dist/jquery.min.js', 
    'https://raw.githubusercontent.com/kenwheeler/slick/master/slick/slick.js' 
    ] 
}; 
let index = 0; 

gulp.task('vendor', (res) => { 
    const url = request.get(paths.vendor[index++]).pipe(res); 
    return gulp.src(url) 
    .pipe(gulp.dest('public/vendor')); 
}); 

let parallelTasks = (new Array(paths.vendor.length)).fill('vendor'); 

gulp.task('default', gulp.parallel(...parallelTasks)); 
+0

' parallel' лишен кода как целого, поэтому у него больше задач. Извините за не mentoining. – Lanti

+1

У меня есть 'TypeError: dest.on не является функцией' ошибка в '.pipe (res);'. – Lanti

+0

Обновлен мой вопрос. – Lanti

3

Вы не можете передать URL в gulp.src(). Экземпляр gulp наследует src() и dest() от vinyl-fs, что означает, что вы можете использовать его только для чтения и записи в локальную файловую систему.

Попробуйте gulp-download вместо этого, который оборачивает request в виниловой поток:

var download = require('gulp-download'); 

gulp.task('vendor',() => { 
    return download(paths.vendor) 
    .pipe(gulp.dest('public/vendor')); 
}); 
Смежные вопросы