2016-07-15 8 views
1

ich folgendes Gulpfile.js haben:Mit schluck mit Anfrage

'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')); 

ich die folgende Fehlermeldung erhalten:

Error: options.uri is a required argument 

Mit dieser Methode ich versuche dicthing clientseitige Paket-Manager, wie Bower . Gibt es eine Möglichkeit request mit gulp zu verwenden und eine Liste von Objekten durchzublättern?

EDIT:

ich diesen Code zum Testen plaziert, nur die erste Zeile aus der Schleife zurückkehrt:

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

Genau wie:

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

ich diese Fehlermeldung haben: 'Fehler: Ungültige URI "/" ' – Lanti

Antwort

1

request.get arbeitet nur auf einer URI zu einer Zeit und Sie übergeben ein Array, auch AFAIK parallel erwartet eine Liste von Aufgaben, nicht eine Aufgabe, die verarbeitet viele Gegenstände. Vielleicht funktionieren würde dies für Sie:

'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' ist Code wie das ganze abgespeckte, so dass es mehr Aufgaben hat. Entschuldigung für nicht Mentoining. – Lanti

+1

Ich habe 'TypeError: dest.on ist keine Funktion' Fehler bei' .pipe (res); '. – Lanti

+0

Meine Frage aktualisiert. – Lanti

3

Sie keine URL zu gulp.src() passieren kann. Die gulp-Instanz erbt src() und dest() von vinyl-fs, was bedeutet, dass Sie sie nur zum Lesen und Schreiben in das lokale Dateisystem verwenden können.

Versuchen gulp-download statt, die request in einen Vinylstrom hüllt:

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

gulp.task('vendor',() => { 
    return download(paths.vendor) 
    .pipe(gulp.dest('public/vendor')); 
});