fix(@angular/build): automatically resolve .mjs files when using Vite

Previously, ESM file resolution without extensions failed when using Vite, causing issues in module loading. This commit addresses the problem by automatically resolving `.mjs` files, aligning the behavior with the application builder and ensuring consistent module resolution across different build tools.

**NB**:  This is a workaround as valid ESM imports should always have an extension.

Closes #27841
This commit is contained in:
Alan Agius 2024-06-13 19:47:41 +00:00 committed by Alan Agius
parent 9b702e1148
commit 2324d5a2ec
3 changed files with 3 additions and 2 deletions

View File

@ -677,6 +677,7 @@ function getDepOptimizationConfig({
supported: getFeatureSupport(target, zoneless),
plugins,
loader,
resolveExtensions: ['.mjs', '.js', '.cjs'],
},
};
}

View File

@ -360,7 +360,7 @@ function getEsBuildCommonOptions(options: NormalizedApplicationBuildOptions): Bu
format: 'esm',
assetNames: outputNames.media,
conditions: ['es2020', 'es2015', 'module'],
resolveExtensions: ['.ts', '.tsx', '.mjs', '.js'],
resolveExtensions: ['.ts', '.tsx', '.mjs', '.js', '.cjs'],
metafile: true,
legalComments: options.extractLicenses ? 'none' : 'eof',
logLevel: options.verbose && !jsonLogs ? 'debug' : 'silent',

View File

@ -63,7 +63,7 @@ export function createGlobalScriptsBundleOptions(
assetNames: outputNames.media,
mainFields: ['script', 'browser', 'main'],
conditions: ['script'],
resolveExtensions: ['.mjs', '.js'],
resolveExtensions: ['.mjs', '.js', '.cjs'],
logLevel: options.verbose && !jsonLogs ? 'debug' : 'silent',
metafile: true,
minify: optimizationOptions.scripts,