download file like a vampire
- skip mechanism, local file & content-length
- retry / timeout support
- stream to file, not ate memory like the download module
- download progress support, via awesome got module
$ npm i dl-vampire --saveimport dl, { Vampire, readUrl } from 'dl-vampire'| name | type | required | default value | description | 
|---|---|---|---|---|
| options.url | String | true | the download url | |
| options.file | String | true | the local target file path | |
| options.onprogress | function(progress) | got downloadProgressevent listener | ||
| options.retry | Object | {times: 5, timeout: false} | retry options, will pass to promise.retry | |
| options.skipExists | boolean | true | if local file already exists AND file stat size match response content-lengthsize, the download will be skiped | |
| options.expectSize | number | validate local file stat.size === expectSize, if check pass the download will be skiped | ||
| options.expectHash | string | validate local file file.hash === expectHash, usingexpectHashAlgorithmif check pass the download will be skiped | ||
| options.expectHashAlgorithm | string | 'md5' | the expect hash algorithm, default md5 | |
| options.useChromeUa | Boolean | true | use user-agentof the Chrome Browser | |
| options.useProxyEnv | Boolean | true | use proxy-agentmodule, will usehttp_proxy/https_proxy/all_proxyenv variable | |
| options.requestOptions | Object | custom request options, see request options | 
- if finally the download is skiped, the return promise will resolve to {skip: true}
- else it will resolve to {skip: false}
| name | type | description | 
|---|---|---|
| options.retry.times | Number | max retry times | 
| options.retry.timeout | Number/false | falsedisables timeout check,Number: max wait in ms | 
| options.retry.onerror | function(err, index) | when retry happens, this hook will be called, whether a normal error or a timeout error, index is 0based | 
more see https://github.com/magicdawn/promise.retry
// options for dl() / readUrl()
import type { DlOptions, ReadUrlOptions, ReadUrlOptionsWithEncoding } from 'dl-vampire'
// onpregress type, and progress arg type
import type { OnProgress, Progress } from 'dl-vampire'the MIT License http://magicdawn.mit-license.org
