updateTSConfig() — astro Function Reference
Architecture documentation for the updateTSConfig() function in index.ts from the astro codebase.
Entity Profile
Dependency Diagram
graph TD 31c483d1_c4ed_7d00_d4c0_9cbf5313e1d8["updateTSConfig()"] 9151bb3d_ee1e_da42_752a_45a9db1dd918["index.ts"] 31c483d1_c4ed_7d00_d4c0_9cbf5313e1d8 -->|defined in| 9151bb3d_ee1e_da42_752a_45a9db1dd918 e251add5_ea46_2280_c246_1b5a023acc3b["add()"] e251add5_ea46_2280_c246_1b5a023acc3b -->|calls| 31c483d1_c4ed_7d00_d4c0_9cbf5313e1d8 6bba8e7c_bf8b_374e_8b24_b01c2bdb5bd4["getDiffContent()"] 31c483d1_c4ed_7d00_d4c0_9cbf5313e1d8 -->|calls| 6bba8e7c_bf8b_374e_8b24_b01c2bdb5bd4 2ee262d1_8614_9c2d_75fd_5bb9c01ac63c["askToContinue()"] 31c483d1_c4ed_7d00_d4c0_9cbf5313e1d8 -->|calls| 2ee262d1_8614_9c2d_75fd_5bb9c01ac63c style 31c483d1_c4ed_7d00_d4c0_9cbf5313e1d8 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/astro/src/cli/add/index.ts lines 1019–1121
async function updateTSConfig(
cwd = process.cwd(),
logger: Logger,
integrationsInfo: IntegrationInfo[],
flags: Flags,
options?: { addIncludes?: string[] },
): Promise<UpdateResult> {
const integrations = integrationsInfo.map(
(integration) => integration.id as frameworkWithTSSettings,
);
const includesToAppend = Array.from(new Set((options?.addIncludes ?? []).filter(Boolean)));
const firstIntegrationWithTSSettings = integrations.find((integration) =>
presets.has(integration),
);
if (!firstIntegrationWithTSSettings && includesToAppend.length === 0) {
return UpdateResult.none;
}
let inputConfig = await loadTSConfig(cwd);
let inputConfigText = '';
if (inputConfig === 'invalid-config' || inputConfig === 'unknown-error') {
return UpdateResult.failure;
} else if (inputConfig === 'missing-config') {
logger.debug('add', "Couldn't find tsconfig.json or jsconfig.json, generating one");
inputConfig = {
tsconfig: defaultTSConfig,
tsconfigFile: path.join(cwd, 'tsconfig.json'),
rawConfig: defaultTSConfig,
};
} else {
inputConfigText = JSON.stringify(inputConfig.rawConfig, null, 2);
}
const configFileName = path.basename(inputConfig.tsconfigFile);
let outputConfig = firstIntegrationWithTSSettings
? updateTSConfigForFramework(inputConfig.rawConfig, firstIntegrationWithTSSettings)
: { ...inputConfig.rawConfig };
for (const include of includesToAppend) {
const currentIncludes = Array.isArray(outputConfig.include) ? outputConfig.include : [];
if (!currentIncludes.includes(include)) {
outputConfig = { ...outputConfig, include: [...currentIncludes, include] };
}
}
const output = JSON.stringify(outputConfig, null, 2);
const diff = getDiffContent(inputConfigText, output);
if (!diff) {
return UpdateResult.none;
}
const message = `\n${boxen(diff, {
margin: 0.5,
padding: 0.5,
borderStyle: 'round',
title: configFileName,
})}\n`;
logger.info(
'SKIP_FORMAT',
`\n ${magenta(`Astro will make the following changes to your ${configFileName}:`)}\n${message}`,
);
if (firstIntegrationWithTSSettings) {
// Every major framework, apart from Vue and Svelte requires different `jsxImportSource`, as such it's impossible to config
// all of them in the same `tsconfig.json`. However, Vue only need `"jsx": "preserve"` for template intellisense which
// can be compatible with some frameworks (ex: Solid)
const conflictingIntegrations: string[] = Array.from(presets.keys()).filter(
(config) => config !== 'vue',
);
const hasConflictingIntegrations =
integrations.filter((integration) => presets.has(integration)).length > 1 &&
integrations.filter((integration) => conflictingIntegrations.includes(integration)).length >
0;
if (hasConflictingIntegrations) {
logger.info(
Domain
Subdomains
Defined In
Called By
Source
Frequently Asked Questions
What does updateTSConfig() do?
updateTSConfig() is a function in the astro codebase, defined in packages/astro/src/cli/add/index.ts.
Where is updateTSConfig() defined?
updateTSConfig() is defined in packages/astro/src/cli/add/index.ts at line 1019.
What does updateTSConfig() call?
updateTSConfig() calls 2 function(s): askToContinue, getDiffContent.
What calls updateTSConfig()?
updateTSConfig() is called by 1 function(s): add.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free