Request wrapper for gulp, allowing you to download files via http/https. The files contents are streamed into a stream of Vinyl files and so download in parallel / concurrently.
npm install gulp-download-stream --save
var download = require("gulp-download-stream");
To download a single file, pass a string as the first argument to download
.
download("http://domain.com/path/to/file.ext")
.pipe(gulp.dest("downloads/"));
To download multiple files, pass an array of strings as the first argument to download
.
download([
"http://domain.com/path/to/file1.ext",
"http://domain.com/path/to/file2.ext"
])
.pipe(gulp.dest("downloads/"));
The files are downloaded concurrently into stream of Vinyl files, and so are suitable to be piped into other gulp plugins. Each Vinyl file is also itself a stream, and so any downstream plugins must also support stream-based Vinyl files.
You can specify the local file names of files downloaded. You can do this for one file
download({
file: "newFileName.ext",
url: "http://domain.com/path/to/file.ext"
})
.pipe(gulp.dest("downloads/"));
or for multiple files.
download([{
file: "newFileName1.ext",
url: "http://domain.com/path/to/file1.ext"
}, {
file: "newFileName2.ext",
url: "http://domain.com/path/to/file2.ext"
}])
.pipe(gulp.dest("downloads/"));
You can pass options to request as the second argument. For example, you can request using HTTP authentication.
download("http://domain.com/path/to/file.ext", {
"auth": {
"user": "username",
"pass": "password",
"sendImmediately": false
}
})
.pipe(gulp.dest("downloads/"));
For any file, if node can't connect to the server, or the server returns a status code >= 400, then the Vinyl stream will emit an error and the containing gulp task will fail.