@expo/cli
Version:
86 lines (85 loc) • 3.52 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
function _export(target, all) {
for(var name in all)Object.defineProperty(target, name, {
enumerable: true,
get: all[name]
});
}
_export(exports, {
resolveOptionsAsync: function() {
return resolveOptionsAsync;
},
resolvePlatformOption: function() {
return resolvePlatformOption;
}
});
function _config() {
const data = require("@expo/config");
_config = function() {
return data;
};
return data;
}
const _platformBundlers = require("../start/server/platformBundlers");
const _errors = require("../utils/errors");
function resolvePlatformOption(exp, platformBundlers, platform = [
'all'
]) {
const platformsAvailable = Object.fromEntries(Object.entries(platformBundlers).filter(([platform, bundler])=>{
var _exp_platforms;
return bundler === 'metro' && ((_exp_platforms = exp.platforms) == null ? void 0 : _exp_platforms.includes(platform));
}));
if (!Object.keys(platformsAvailable).length) {
throw new _errors.CommandError(`No platforms are configured to use the Metro bundler in the project Expo config.`);
}
const assertPlatformBundler = (platform)=>{
if (!platformsAvailable[platform]) {
var _exp_platforms, _exp_platforms1;
if (!((_exp_platforms = exp.platforms) == null ? void 0 : _exp_platforms.includes(platform)) && platform === 'web') {
// Pass through so the more robust error message is shown.
return platform;
}
throw new _errors.CommandError('BAD_ARGS', `Platform "${platform}" is not configured to use the Metro bundler in the project Expo config, or is missing from the supported platforms in the platforms array: [${(_exp_platforms1 = exp.platforms) == null ? void 0 : _exp_platforms1.join(', ')}].`);
}
return platform;
};
const knownPlatforms = [
'android',
'ios',
'web'
];
const assertPlatformIsKnown = (platform)=>{
if (!knownPlatforms.includes(platform)) {
throw new _errors.CommandError(`Unsupported platform "${platform}". Options are: ${knownPlatforms.join(',')},all`);
}
return platform;
};
return platform// Expand `all` to all available platforms.
.map((platform)=>platform === 'all' ? Object.keys(platformsAvailable) : platform).flat()// Remove duplicated platforms
.filter((platform, index, list)=>list.indexOf(platform) === index)// Assert platforms are valid
.map((platform)=>assertPlatformIsKnown(platform)).map((platform)=>assertPlatformBundler(platform));
}
async function resolveOptionsAsync(projectRoot, args) {
const { exp } = (0, _config().getConfig)(projectRoot, {
skipPlugins: true,
skipSDKVersionRequirement: true
});
const platformBundlers = (0, _platformBundlers.getPlatformBundlers)(projectRoot, exp);
const platforms = resolvePlatformOption(exp, platformBundlers, args['--platform']);
return {
platforms,
outputDir: args['--output-dir'] ?? 'dist',
minify: !args['--no-minify'],
bytecode: !args['--no-bytecode'],
clear: !!args['--clear'],
dev: !!args['--dev'],
maxWorkers: args['--max-workers'],
dumpAssetmap: !!args['--dump-assetmap'],
sourceMaps: !!args['--source-maps'],
skipSSG: !!args['--no-ssg']
};
}
//# sourceMappingURL=resolveOptions.js.map
;