fetch-for-all
v0.0.3
Published
🕸️ A better redistribution of node-fetch
Downloads
22
Readme
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 betweennode-fetch@2andnode-fetch@3. - With upcoming versions of Node.js, native
fetchis 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 [![][packagephobia-s-src]][packagephobia-s-href] vs [![][packagephobia-s-alt-src]][packagephobia-s-alt-href]
🔗 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-allYou 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_FETCHenvironment 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

