From 661546eba4a02578e859b4b3eea43c75fa173cf4 Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Thu, 5 Jan 2023 13:05:59 -0800 Subject: [PATCH] Allow adding additional webpack externals at build time (#6883) Signed-off-by: Sebastian Malton Signed-off-by: Sebastian Malton --- webpack/main.ts | 3 ++- webpack/renderer.ts | 11 +++++++---- webpack/vars.ts | 3 +++ 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/webpack/main.ts b/webpack/main.ts index a57e9ccd9c..f9073a162b 100755 --- a/webpack/main.ts +++ b/webpack/main.ts @@ -12,7 +12,7 @@ import CircularDependencyPlugin from "circular-dependency-plugin"; import { iconsAndImagesWebpackRules } from "./renderer"; import type { WebpackPluginInstance } from "webpack"; import { DefinePlugin } from "webpack"; -import { buildDir, isDevelopment, mainDir } from "./vars"; +import { additionalExternals, buildDir, isDevelopment, mainDir } from "./vars"; import { platform } from "process"; const main = ({ showVars = true } = {}): webpack.Configuration => { @@ -43,6 +43,7 @@ const main = ({ showVars = true } = {}): webpack.Configuration => { }, externals: [ nodeExternals(), + ...additionalExternals, ], module: { parser: { diff --git a/webpack/renderer.ts b/webpack/renderer.ts index ec66e22b70..b39fbfa656 100755 --- a/webpack/renderer.ts +++ b/webpack/renderer.ts @@ -14,7 +14,7 @@ import ReactRefreshWebpackPlugin from "@pmmmwh/react-refresh-webpack-plugin"; import type { WebpackPluginInstance } from "webpack"; import { DefinePlugin } from "webpack"; import getTypescriptLoader from "./get-typescript-loader"; -import { assetsFolderName, isDevelopment, rendererDir, buildDir, appName, htmlTemplate, publicPath, sassCommonVars } from "./vars"; +import { assetsFolderName, isDevelopment, rendererDir, buildDir, appName, htmlTemplate, publicPath, sassCommonVars, additionalExternals } from "./vars"; import { platform } from "process"; export function webpackLensRenderer({ showVars = true } = {}): webpack.Configuration { @@ -63,9 +63,12 @@ export function webpackLensRenderer({ showVars = true } = {}): webpack.Configura ".ts", ".tsx", ], }, - externals: { - "node-fetch": "commonjs node-fetch", - }, + externals: [ + { + "node-fetch": "commonjs node-fetch", + }, + ...additionalExternals, + ], optimization: { minimize: false, }, diff --git a/webpack/vars.ts b/webpack/vars.ts index b0245dedae..55a0a7b4d9 100644 --- a/webpack/vars.ts +++ b/webpack/vars.ts @@ -21,5 +21,8 @@ export const htmlTemplate = path.resolve(rendererDir, "template.html"); export const publicPath = "/build/"; export const sassCommonVars = path.resolve(rendererDir, "components/vars.scss"); export const webpackDevServerPort = Number(process.env.WEBPACK_DEV_SERVER_PORT) || 9191; +export const additionalExternals = (process.env.LENS_BUILD_ADDITIONAL_WEBPACK_EXTERNALS || "") + .split(",") + .map(s => s.trim()); assert(Number.isInteger(webpackDevServerPort), "WEBPACK_DEV_SERVER_PORT environment variable must only be an integer");