# wget-improved

> wget in nodejs, forked from wuchengwei/node-wget to add improvements and help maintain the project

Latest version **3.4.0** (published 2023-06-15) · MIT license · 0 weekly downloads

## Install

```sh
npm install wget-improved
pnpm add wget-improved
yarn add wget-improved
bun add wget-improved
```

Provides the command `nwget`.

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 3.4.0 |
| Published | 2023-06-15 |
| First published | 2014-12-20 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Node | >= 0.6.18 |
| Dependencies | 2 |
| Unpacked size | 25.5 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 50 |
| Author | Bearjaws |
| Maintainers | bearjaws |
| Keywords | download, http, https, ftp, proxy, wget |

## Links

- npm: https://www.npmjs.com/package/wget-improved
- Repository: https://github.com/bearjaws/node-wget
- Issues: https://github.com/bearjaws/node-wget/issues
- npm.io page: https://npm.io/package/wget-improved

## Dependencies (2)

- [tunnel](https://npm.io/package/tunnel.md) 0.0.6
- [minimist](https://npm.io/package/minimist.md) 1.2.6

## Recent versions

- 3.4.0 (latest) — 2023-06-15
- 3.3.1 — 2022-03-28
- 3.3.0 — 2022-02-22
- 3.2.1 — 2020-08-09
- 3.2.0 — 2020-02-16
- 3.1.0 — 2020-02-16
- 3.0.2 — 2018-12-02
- 3.0.1 — 2018-05-20
- 3.0.0 — 2018-05-20
- 1.5.0 — 2017-06-08
- 1.4.0 — 2016-11-05
- 1.3.0 — 2016-01-20
- 1.2.1 — 2015-12-03
- 1.1.1 — 2015-07-28
- 1.0.1 — 2014-12-21
- … 5 more at https://npm.io/package/wget-improved/versions

## README

# wget-improved
[![CircleCI](https://circleci.com/gh/bearjaws/node-wget/tree/master.svg?style=svg)](https://circleci.com/gh/bearjaws/node-wget/tree/master)

wget-improved simplifies retrieving files from any URL

Improvements over [wuchengwei/node-wget](https://github.com/wuchengwei/node-wget)
- Handles 3xx redirects (including infinite redirect loops)
- Passes URL parameters
- Better error reporting
- Does not write using append (uses w+ identical to wget)
- Handles gzip compression, allow you to automatically gunzip the stream

## Install

```
npm install wget-improved --save
```

## download(src, output, options)

```js
const wget = require('wget-improved');
const src = 'http://nodejs.org/images/logo.svg';
const output = '/tmp/logo.svg';
const options = {
    // see options below
};
let download = wget.download(src, output, options);
download.on('error', function(err) {
    console.log(err);
});
download.on('start', function(fileSize) {
    console.log(fileSize);
});
download.on('end', function(output) {
    console.log(output);
});
download.on('progress', function(progress) {
    typeof progress === 'number'
    // code to show progress bar
});
```

## request(options, callback)

```js
const wget = require('wget');
const options = {
    protocol: 'https',
    host: 'raw.github.com',
    path: '/Fyrd/caniuse/master/data.json',
    proxy: 'http://host:port',
    method: 'GET'
};
let req = wget.request(options, function(res) {
    let content = '';
    if (res.statusCode === 200) {
        res.on('error', function(err) {
            console.log(err);
        });
        res.on('data', function(chunk) {
            content += chunk;
        });
        res.on('end', function() {
            console.log(content);
        });
    } else {
        console.log('Server respond ' + res.statusCode);
    }
});

req.end();
req.on('error', function(err) {
    console.log(err);
});
```

## options

```js

options = {}
    // Set to true to have any gzip stream automatically decompressed before saving
    options.gunzip = false;
    options.proxy = {};
        options.proxy.protocol = 'http';
        options.proxy.host = 'someproxy.org';
        options.proxy.port = 1337;
        options.proxy.proxyAuth = '{basic auth}';
        options.proxy.headers = {'User-Agent': 'Node'};
```

## CLI

```bash
# If installed globally
nwget https://raw.github.com/Fyrd/caniuse/master/data.json -O /tmp/data.json

# If not installed globally
./node_modules/.bin/nwget https://raw.github.com/Fyrd/caniuse/master/data.json -O /tmp/data.json
```

## Changes from 2.0.0 to 3.0.0
**Progress is now returned as a Number instead of a String**

**On start filesize can return null when the remote server does not provide content-length**

Exception for not specifying protocol is now: `Your URL must use either HTTP or HTTPS.`

Supports handling redirects that return a relative URL.

You can now get events for the **total** number of bytes downloaded `download.on('bytes', function(bytes) {}...)`

Request headers can be specified by passing an object to options.headers.

Unit tests have been added for most download functionality and error cases. Tests are a requirement for all PRs going forward!

---
_Source: https://npm.io/package/wget-improved · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
