Home / File/ install-package.ts — astro Source File

install-package.ts — astro Source File

Architecture documentation for install-package.ts, a typescript file in the astro codebase. 9 imports, 0 dependents.

File typescript CoreAstro RenderingEngine 9 imports 5 functions

Entity Profile

Dependency Diagram

graph LR
  ba36b72c_5f3d_f082_9365_52233650426e["install-package.ts"]
  d3861967_b647_84d2_ff48_15013353bd56["../core/logger/core.js"]
  ba36b72c_5f3d_f082_9365_52233650426e --> d3861967_b647_84d2_ff48_15013353bd56
  2463eb24_f776_899f_90b4_a169465ba014["./exec.js"]
  ba36b72c_5f3d_f082_9365_52233650426e --> 2463eb24_f776_899f_90b4_a169465ba014
  3955a637_4c78_0528_fe7c_92190a232cb0["node:module"]
  ba36b72c_5f3d_f082_9365_52233650426e --> 3955a637_4c78_0528_fe7c_92190a232cb0
  d72120bd_fb9e_cb9d_d2e6_c926d3feb165["boxen"]
  ba36b72c_5f3d_f082_9365_52233650426e --> d72120bd_fb9e_cb9d_d2e6_c926d3feb165
  65300f14_7198_278b_9340_6e56b02fc2ea["ci-info"]
  ba36b72c_5f3d_f082_9365_52233650426e --> 65300f14_7198_278b_9340_6e56b02fc2ea
  61b635e2_549a_1d06_be03_2c8dced634c4["package-manager-detector"]
  ba36b72c_5f3d_f082_9365_52233650426e --> 61b635e2_549a_1d06_be03_2c8dced634c4
  10250468_0e83_bd69_43e9_3bcef2294a91["piccolore"]
  ba36b72c_5f3d_f082_9365_52233650426e --> 10250468_0e83_bd69_43e9_3bcef2294a91
  340b0f28_45a9_98e5_fc8e_01e5b2ac8446["prompts"]
  ba36b72c_5f3d_f082_9365_52233650426e --> 340b0f28_45a9_98e5_fc8e_01e5b2ac8446
  47001231_002e_be67_d48b_cc6540af2ed5["yocto-spinner"]
  ba36b72c_5f3d_f082_9365_52233650426e --> 47001231_002e_be67_d48b_cc6540af2ed5
  style ba36b72c_5f3d_f082_9365_52233650426e fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import { createRequire } from 'node:module';
import boxen from 'boxen';
import ci from 'ci-info';
import { detect, resolveCommand } from 'package-manager-detector';
import colors from 'piccolore';
import prompts from 'prompts';
import yoctoSpinner from 'yocto-spinner';
import type { Logger } from '../core/logger/core.js';
import { exec } from './exec.js';

const require = createRequire(import.meta.url);
const { bold, cyan, dim, magenta } = colors;

type GetPackageOptions = {
	skipAsk?: boolean;
	optional?: boolean;
	cwd?: string;
};

export async function getPackage<T>(
	packageName: string,
	logger: Logger,
	options: GetPackageOptions,
	otherDeps: string[] = [],
): Promise<T | undefined> {
	try {
		// Try to resolve with `createRequire` first to prevent ESM caching of the package
		// if it errors and fails here
		require.resolve(packageName, { paths: [options.cwd ?? process.cwd()] });
		const packageImport = await import(packageName);
		return packageImport as T;
	} catch {
		if (options.optional) return undefined;
		let message = `To continue, Astro requires the following dependency to be installed: ${bold(
			packageName,
		)}.`;

		if (ci.isCI) {
			message += ` Packages cannot be installed automatically in CI environments.`;
		}

		logger.info('SKIP_FORMAT', message);

		if (ci.isCI) {
			return undefined;
		}

		const result = await installPackage([packageName, ...otherDeps], options, logger);

		if (result) {
			const packageImport = await import(packageName);
			return packageImport;
		} else {
			return undefined;
		}
	}
}

async function installPackage(
	packageNames: string[],
// ... (121 more lines)

Domain

Subdomains

Dependencies

  • ../core/logger/core.js
  • ./exec.js
  • boxen
  • ci-info
  • node:module
  • package-manager-detector
  • piccolore
  • prompts
  • yocto-spinner

Frequently Asked Questions

What does install-package.ts do?
install-package.ts is a source file in the astro codebase, written in typescript. It belongs to the CoreAstro domain, RenderingEngine subdomain.
What functions are defined in install-package.ts?
install-package.ts defines 5 function(s): fetchPackageJson, fetchPackageVersions, getPackage, getRegistry, installPackage.
What does install-package.ts depend on?
install-package.ts imports 9 module(s): ../core/logger/core.js, ./exec.js, boxen, ci-info, node:module, package-manager-detector, piccolore, prompts, and 1 more.
Where is install-package.ts in the architecture?
install-package.ts is located at packages/astro/src/cli/install-package.ts (domain: CoreAstro, subdomain: RenderingEngine, directory: packages/astro/src/cli).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free