Richienb / node-polyfill-webpack-plugin

Polyfill Node.js core modules in Webpack.
MIT License
293 stars 32 forks source link

node-polyfill-webpack-plugin

Polyfill Node.js core modules in Webpack.

This module is only needed for Webpack 5+.

Install

npm install node-polyfill-webpack-plugin

Usage

Add the following to your webpack.config.js:

const NodePolyfillPlugin = require('node-polyfill-webpack-plugin');

module.exports = {
    // Other rules...
    plugins: [
        new NodePolyfillPlugin(),
    ],
};

console, process, and most deprecated/internal Node.js core modules are not polyfilled by default. If you still need to polyfill them, you can use the additionalAliases option:

const NodePolyfillPlugin = require('node-polyfill-webpack-plugin');

module.exports = {
    // Other rules...
    plugins: [
        new NodePolyfillPlugin({
            additionalAliases: ['process', 'punycode'],
        }),
    ],
};

The fs module resolves to nothing because its functionality cannot replicated in the browser.

API

new NodePolyfillPlugin(options?)

options

Type: object

onlyAliases is mutually exclusive with excludeAliases and additionalAliases.

excludeAliases

If you don't want a module to be polyfilled, you can specify aliases to be skipped here.

const NodePolyfillPlugin = require('node-polyfill-webpack-plugin');

module.exports = {
    // Other rules...
    plugins: [
        new NodePolyfillPlugin({
            excludeAliases: ['console'],
        }),
    ],
};

additionalAliases

Alternatively, you can choose to add certain aliases to the list of polyfilled modules. For example, you can choose to polyfill console.

const NodePolyfillPlugin = require('node-polyfill-webpack-plugin');

module.exports = {
    // Other rules...
    plugins: [
        new NodePolyfillPlugin({
            additionalAliases: ['console'],
        }),
    ],
};

onlyAliases

You can also choose to only include certain aliases, ignoring the defaults. For example, you can have only console polyfilled.

const NodePolyfillPlugin = require('node-polyfill-webpack-plugin');

module.exports = {
    // Other rules...
    plugins: [
        new NodePolyfillPlugin({
            onlyAliases: ['console'],
        }),
    ],
};

Aliases

Globals

Modules