|
|
1 year ago | |
|---|---|---|
| .. | ||
| dist | 1 year ago | |
| lib | 1 year ago | |
| LICENSE | 1 year ago | |
| README.md | 1 year ago | |
| package.json | 1 year ago | |
A redistribution of node-fetch v3 for better backward and forward compatibility.
Why this package?
require('node-fetch') with latest version. This stopped popular libraries from upgrading and dependency conflicts between node-fetch@2 and node-fetch@3.fetch is being supported. We are prepared for native fetch support using this package yet keep supporting older Node versions.Features:
✅ Prefer to native globals when available (See Node.js experimental fetch).
✅ Compact build and less install size with zero dependencies vs
✅ Support both CommonJS (require) and ESM (import) usage
✅ Use native version if imported without node condition using conditional exports with zero bundle overhead
✅ Polyfill support for Node.js
Install node-fetch-native dependency:
# npm
npm i node-fetch-native
# yarn
yarn add node-fetch-native
# pnpm
pnpm i node-fetch-native
You can now either import or require the dependency:
// ESM
import fetch from 'node-fetch-native'
// CommonJS
const fetch = require('node-fetch-native')
More named exports:
// ESM
import { fetch, Blob, FormData, Headers, Request, Response, AbortController } from 'node-fetch-native'
// CommonJS
const { fetch, Blob, FormData, Headers, Request, Response, AbortController } = require('node-fetch-native')
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:
FORCE_NODE_FETCH environment variable before starting application.node-fetch-native/nodeUsing 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 'node-fetch-native/polyfill'
// CJS
require('node-fetch-native/polyfill')
// You can now use fetch() without any import!
node-fetchUsing this method, you can ensure all project dependencies and usages of node-fetch can benefit from improved node-fetch-native and won’t conflict between node-fetch@2 and node-fetch@3.
Using npm overrides:
// package.json
{
"overrides": {
"node-fetch": "npm:node-fetch-native@latest"
}
}
Using yarn selective dependency resolutions:
// package.json
{
"resolutions": {
"node-fetch": "npm:node-fetch-native@latest"
}
}
Using pnpm.overrides:
// package.json
{
"pnpm": {
"overrides": {
"node-fetch": "npm:node-fetch-native@latest"
}
}
}
Made with 💛