A Vite plugin to polyfill Node's Core Modules for browser environments.
npm install vite-plugin-node-polyfills

A Vite plugin to polyfill Node's Core Modules for browser environments. Supports node: protocol imports.
```
Module "stream" has been externalized for browser compatibility. Cannot access "stream.Readable" in client code.
Since browsers do not support Node's Core Modules, packages that use them must be polyfilled to function in browser environments. In an attempt to prevent runtime errors, Vite produces errors or warnings when your code references builtin modules such as fs or path.
Install the package as a dev dependency.
`shnpm
npm install --save-dev vite-plugin-node-polyfills
Add the plugin to your
vite.config.ts file.`ts
import { defineConfig } from 'vite'
import { nodePolyfills } from 'vite-plugin-node-polyfills'// https://vitejs.dev/config/
export default defineConfig({
plugins: [
nodePolyfills(),
],
})
`$3
The following options are available to customize it for your needs.
`ts
import { defineConfig } from 'vite'
import { nodePolyfills } from 'vite-plugin-node-polyfills'// https://vitejs.dev/config/
export default defineConfig({
plugins: [
nodePolyfills({
// To add only specific polyfills, add them here. If no option is passed, adds all polyfills
include: ['path'],
// To exclude specific polyfills, add them to this list. Note: if include is provided, this has no effect
exclude: [
'http', // Excludes the polyfill for
http and node:http.
],
// Whether to polyfill specific globals.
globals: {
Buffer: true, // can also be 'build', 'dev', or false
global: true,
process: true,
},
// Override the default polyfills for specific modules.
overrides: {
// Since fs is not supported in browsers, we can use the memfs package to polyfill it.
fs: 'memfs',
},
// Whether to polyfill node: protocol imports.
protocolImports: true,
}),
],
})
`$3
- If protocolImports is true, also adds node:[module]
`js
[
'_stream_duplex',
'_stream_passthrough',
'_stream_readable',
'_stream_transform',
'_stream_writable',
'assert',
'buffer',
'child_process',
'cluster',
'console',
'constants',
'crypto',
'dgram',
'dns',
'domain',
'events',
'fs',
'http',
'http2',
'https',
'module',
'net',
'os',
'path',
'process',
'punycode',
'querystring',
'readline',
'repl',
'stream',
'string_decoder',
'sys',
'timers',
'timers/promises',
'tls',
'tty',
'url',
'util',
'vm',
'zlib',
]
``Hello! My name is David, and in my spare time, I build tools to help developers be more productive. If you find my work valuable, I would really appreciate a sponsorship or donation. If you want to see more of my work, check out davidmyers.dev.
Thanks for your support! 🪴