mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-06-18 05:43:11 -05:00
Show implied options in --showConfig (#56701)
This commit is contained in:
@@ -15,6 +15,7 @@ import {
|
||||
CommandLineOptionOfListType,
|
||||
CompilerOptions,
|
||||
CompilerOptionsValue,
|
||||
computedOptions,
|
||||
ConfigFileSpecs,
|
||||
containsPath,
|
||||
convertToRelativePath,
|
||||
@@ -103,6 +104,7 @@ import {
|
||||
removeTrailingDirectorySeparator,
|
||||
returnTrue,
|
||||
ScriptTarget,
|
||||
some,
|
||||
startsWith,
|
||||
StringLiteral,
|
||||
SyntaxKind,
|
||||
@@ -2475,9 +2477,10 @@ export function convertToTSConfig(configParseResult: ParsedCommandLine, configFi
|
||||
),
|
||||
f => getRelativePathFromFile(getNormalizedAbsolutePath(configFileName, host.getCurrentDirectory()), getNormalizedAbsolutePath(f, host.getCurrentDirectory()), getCanonicalFileName),
|
||||
);
|
||||
const optionMap = serializeCompilerOptions(configParseResult.options, { configFilePath: getNormalizedAbsolutePath(configFileName, host.getCurrentDirectory()), useCaseSensitiveFileNames: host.useCaseSensitiveFileNames });
|
||||
const pathOptions = { configFilePath: getNormalizedAbsolutePath(configFileName, host.getCurrentDirectory()), useCaseSensitiveFileNames: host.useCaseSensitiveFileNames };
|
||||
const optionMap = serializeCompilerOptions(configParseResult.options, pathOptions);
|
||||
const watchOptionMap = configParseResult.watchOptions && serializeWatchOptions(configParseResult.watchOptions);
|
||||
const config = {
|
||||
const config: TSConfig & { watchOptions?: object; } = {
|
||||
compilerOptions: {
|
||||
...optionMapToObject(optionMap),
|
||||
showConfig: undefined,
|
||||
@@ -2500,6 +2503,19 @@ export function convertToTSConfig(configParseResult: ParsedCommandLine, configFi
|
||||
} : {}),
|
||||
compileOnSave: !!configParseResult.compileOnSave ? true : undefined,
|
||||
};
|
||||
|
||||
const providedKeys = new Set(optionMap.keys());
|
||||
const impliedCompilerOptions: Record<string, CompilerOptionsValue> = {};
|
||||
for (const option in computedOptions) {
|
||||
if (!providedKeys.has(option) && some(computedOptions[option as keyof typeof computedOptions].dependencies, dep => providedKeys.has(dep))) {
|
||||
const implied = computedOptions[option as keyof typeof computedOptions].computeValue(configParseResult.options);
|
||||
const defaultValue = computedOptions[option as keyof typeof computedOptions].computeValue({});
|
||||
if (implied !== defaultValue) {
|
||||
impliedCompilerOptions[option] = computedOptions[option as keyof typeof computedOptions].computeValue(configParseResult.options);
|
||||
}
|
||||
}
|
||||
}
|
||||
assign(config.compilerOptions, optionMapToObject(serializeCompilerOptions(impliedCompilerOptions, pathOptions)));
|
||||
return config;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user