fix(webpack): use existing runtime version to determine the supported browsers

This commit is contained in:
Eduardo Speroni
2023-06-06 12:44:58 -03:00
parent 109dad13ad
commit 47e18c8df4
3 changed files with 46 additions and 2 deletions

View File

@@ -208,7 +208,10 @@ exports[`angular configuration for android 1`] = `
{
loader: '@angular-devkit/build-angular/src/babel/webpack-loader',
options: {
aot: true
aot: true,
supportedBrowsers: [
'chrome 83'
]
}
}
],
@@ -634,7 +637,10 @@ exports[`angular configuration for ios 1`] = `
{
loader: '@angular-devkit/build-angular/src/babel/webpack-loader',
options: {
aot: true
aot: true,
supportedBrowsers: [
'chrome 103'
]
}
}
],

View File

@@ -41,6 +41,7 @@
"sass": "^1.0.0",
"sass-loader": "^13.0.0",
"sax": "^1.0.0",
"semver": "^7.5.1",
"source-map": "^0.7.0",
"terser-webpack-plugin": "^5.0.0",
"ts-dedent": "^2.0.0",

View File

@@ -13,6 +13,7 @@ import {
getPlatformName,
} from '../helpers/platform';
import base from './base';
import semver from 'semver';
// until we can switch to async/await on the webpack config, copy this from '@angular/compiler-cli'
const GLOBAL_DEFS_FOR_TERSER = {
ngDevMode: false,
@@ -24,6 +25,40 @@ const GLOBAL_DEFS_FOR_TERSER_WITH_AOT = {
ngJitMode: false,
};
const CHROME_VERSIONS = {
android: {
'0.0.0': 'chrome 83',
'8.5.0': 'chrome 103',
},
ios: {
'0.0.0': 'chrome 92',
'8.5.0': 'chrome 103',
},
default: 'chrome 103',
};
function getSupportedBrowsers() {
const platform = getPlatformName();
if (platform === 'android' || platform === 'ios') {
try {
const version = require(`@nativescript/${platform}/package.json`).version;
let parsed = semver.parse(version);
if (parsed) {
let lastVersion = CHROME_VERSIONS.default;
for (const k in CHROME_VERSIONS[platform]) {
if (semver.gte(parsed, k)) {
lastVersion = CHROME_VERSIONS[platform][k];
} else {
break;
}
}
return [lastVersion];
}
} catch (e) {}
}
return [CHROME_VERSIONS.default];
}
export default function (config: Config, env: IWebpackEnv = _env): Config {
base(config, env);
@@ -197,6 +232,8 @@ export default function (config: Config, env: IWebpackEnv = _env): Config {
const { ScriptTarget } = getTypescript();
buildAngularOptions.scriptTarget =
tsConfig.options.target ?? ScriptTarget.ESNext;
} else {
buildAngularOptions.supportedBrowsers = getSupportedBrowsers();
}
if (disableAOT) {