From d262e1db79f871c6876f00921154fd86117167e4 Mon Sep 17 00:00:00 2001 From: Igor Randjelovic Date: Tue, 10 Aug 2021 16:47:39 +0200 Subject: [PATCH] feat: polyfill Buffer & crypto --- packages/webpack5/package.json | 2 ++ packages/webpack5/src/configuration/base.ts | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/packages/webpack5/package.json b/packages/webpack5/package.json index da7b13e2a..f42bd4171 100644 --- a/packages/webpack5/package.json +++ b/packages/webpack5/package.json @@ -22,10 +22,12 @@ "acorn": "^8.0.0", "acorn-stage3": "^4.0.0", "babel-loader": "^8.0.0", + "buffer": "^6.0.3", "chalk": "^4.0.0", "cli-highlight": "^2.0.0", "commander": "^7.0.0", "copy-webpack-plugin": "^9.0.0", + "crypto-browserify": "^3.12.0", "css": "^3.0.0", "css-loader": "^5.0.0", "dotenv-webpack": "^7.0.0", diff --git a/packages/webpack5/src/configuration/base.ts b/packages/webpack5/src/configuration/base.ts index 90c7f0a6a..a0add9c70 100644 --- a/packages/webpack5/src/configuration/base.ts +++ b/packages/webpack5/src/configuration/base.ts @@ -2,6 +2,7 @@ import { ContextExclusionPlugin, DefinePlugin, HotModuleReplacementPlugin, + ProvidePlugin, } from 'webpack'; import Config from 'webpack-chain'; import { resolve } from 'path'; @@ -363,6 +364,18 @@ export default function (config: Config, env: IWebpackEnv = _env): Config { }, ]); + // polyfill things that don't exist in the NS runtimes + config.plugin('ProvidePlugin|Polyfills').use(ProvidePlugin, [ + { + Buffer: [require.resolve('buffer/'), 'Buffer'], + }, + ]); + + config.resolve.set('fallback', { + buffer: require.resolve('buffer/'), + crypto: require.resolve('crypto-browserify/'), + }); + // enable DotEnv applyDotEnvPlugin(config);