From 03dae26d9277267e4b11455ca5df08cbd101f697 Mon Sep 17 00:00:00 2001 From: Nathan Walker Date: Fri, 25 Jul 2025 10:58:09 -0700 Subject: [PATCH] feat(webpack): auto enable commonjs when a project is on core < 9 --- packages/webpack5/src/configuration/base.ts | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/packages/webpack5/src/configuration/base.ts b/packages/webpack5/src/configuration/base.ts index e21f40c75..b06f81cb0 100644 --- a/packages/webpack5/src/configuration/base.ts +++ b/packages/webpack5/src/configuration/base.ts @@ -14,7 +14,11 @@ import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer'; import TerserPlugin from 'terser-webpack-plugin'; import { getProjectFilePath, getProjectTSConfigPath } from '../helpers/project'; -import { getDependencyVersion, hasDependency } from '../helpers/dependencies'; +import { + getAllDependencies, + getDependencyVersion, + hasDependency, +} from '../helpers/dependencies'; import { PlatformSuffixPlugin } from '../plugins/PlatformSuffixPlugin'; import { applyFileReplacements } from '../helpers/fileReplacements'; import { addCopyRule, applyCopyRules } from '../helpers/copyRules'; @@ -40,6 +44,16 @@ export default function (config: Config, env: IWebpackEnv = _env): Config { // set mode config.mode(mode); + // determine target output by @nativescript/core version + // v9+ supports ESM output, anything below uses CommonJS + if (hasDependency('@nativescript/core')) { + const coreVersion = getDependencyVersion('@nativescript/core'); + if (coreVersion && !satisfies(coreVersion, '>=9.0.0')) { + // @nativescript/core < 9.0.0 uses CommonJS output + env.commonjs = true; + } + } + // config.stats({ // logging: 'verbose' // })