Home / Function/ updateTSConfig() — astro Function Reference

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

Called By

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