install-package.ts — astro Source File
Architecture documentation for install-package.ts, a typescript file in the astro codebase. 9 imports, 0 dependents.
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
Types
Dependencies
- ../core/logger/core.js
- ./exec.js
- boxen
- ci-info
- node:module
- package-manager-detector
- piccolore
- prompts
- yocto-spinner
Source
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