0.0.3 β€’ Published 1 year ago

fetch-for-all v0.0.3

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

cover npm version npm downloads JSDocs License

A redistribution of node-fetch v3 for better backward and forward compatibility.

🌟 Why this package? 🌟

  • We can no longer require('node-fetch') with the latest version 😒. This stopped popular libraries from upgrading and caused dependency conflicts between node-fetch@2 and node-fetch@3.
  • With upcoming versions of Node.js, native fetch is being supported πŸš€. We're prepared for native fetch support using this package, yet we'll keep supporting older Node versions.

Features: πŸŽ‰

🌐 Prefers native globals when available (See Node.js experimental fetch).

πŸ“¦ Compact build and smaller install size with zero dependencies vs

πŸ”— Supports both CommonJS (require) and ESM (import) usage

🚧 Uses native version if imported without node condition using conditional exports with zero bundle overhead

πŸ”„ Polyfill support for Node.js

Usage

Install fetch-for-all dependency:

# nyxi
pnpm i fetch-for-all

# pnpm
pnpm add fetch-for-all

# npm
npm i yarn add fetch-for-all

# yarn
yarn add fetch-for-all

You can now either import or require the dependency:

// ESM
import fetch from 'fetch-for-all'

// CommonJS
const fetch = require('fetch-for-all')

More named exports:

// ESM
import { fetch, Blob, FormData, Headers, Request, Response, AbortController } from 'fetch-for-all'

// CommonJS
const { fetch, Blob, FormData, Headers, Request, Response, AbortController } = require('fetch-for-all')

Force using non-native version

Sometimes you want to explicitly use none native (node-fetch) implementation of fetch in case of issues with native/polyfill version of globalThis.fetch with Node.js or runtime environment.

You have two ways to do this:

  • Set FORCE_NODE_FETCH environment variable before starting application.
  • Import from fetch-for-all/node

Polyfill support

Using the polyfill method, we can once ensure global fetch is available in the environment and all files. Natives are always preferred.

Note: I don't recommand this if you are authoring a library! Please prefer explicit methods.

// ESM
import 'fetch-for-all/polyfill'

// CJS
require('fetch-for-all/polyfill')

// You can now use fetch() without any import!

Alias to node-fetch

Using this method, you can ensure all project dependencies and usages of node-fetch can benefit from improved fetch-for-all and won't conflict between node-fetch@2 and node-fetch@3.

npm

Using npm overrides:

// package.json
{
  "overrides": {
    "node-fetch": "npm:fetch-for-all@latest"
  }
}

yarn

Using yarn selective dependency resolutions:

// package.json
{
  "resolutions": {
    "node-fetch": "npm:fetch-for-all@latest"
  }
}

pnpm

Using pnpm.overrides:

// package.json
{
  "pnpm": {
    "overrides": {
      "node-fetch": "npm:fetch-for-all@latest"
    }
  }
}

License

Made with πŸ’ž

fetch-for-all is published under the MIT LICENSE

0.0.3

1 year ago

0.0.2

1 year ago

0.0.1

1 year ago