NpmPackageManager Class — astro Architecture
Architecture documentation for the NpmPackageManager class in npm-package-manager.ts from the astro codebase.
Entity Profile
Dependency Diagram
graph TD 2e4fe66b_34c1_d431_e021_4d9cf6e37083["NpmPackageManager"] 86018cb3_a9ae_f366_c549_4a3d100bab0f["npm-package-manager.ts"] 2e4fe66b_34c1_d431_e021_4d9cf6e37083 -->|defined in| 86018cb3_a9ae_f366_c549_4a3d100bab0f 89662485_f4da_4f94_196d_0d88d14336d2["constructor()"] 2e4fe66b_34c1_d431_e021_4d9cf6e37083 -->|method| 89662485_f4da_4f94_196d_0d88d14336d2 1cdcf038_a494_2a7c_847b_e3ae7ff0aded["getPackageVersion()"] 2e4fe66b_34c1_d431_e021_4d9cf6e37083 -->|method| 1cdcf038_a494_2a7c_847b_e3ae7ff0aded
Relationship Graph
Source Code
packages/astro/src/cli/info/infra/npm-package-manager.ts lines 9–43
export class NpmPackageManager implements PackageManager {
readonly name: string = 'npm';
readonly #commandExecutor: CommandExecutor;
constructor({ commandExecutor }: { commandExecutor: CommandExecutor }) {
this.#commandExecutor = commandExecutor;
}
async getPackageVersion(name: string): Promise<string | undefined> {
try {
// https://docs.npmjs.com/cli/v9/commands/npm-ls
const { stdout } = await this.#commandExecutor.execute(
'npm',
['ls', name, '--json', '--depth=1'],
{
shell: true,
},
);
const parsedNpmOutput = JSON.parse(stdout) as BareNpmLikeVersionOutput;
if (!parsedNpmOutput.dependencies) {
return undefined;
}
if (parsedNpmOutput.dependencies[name]) {
return `v${parsedNpmOutput.dependencies[name].version}`;
}
const astro = parsedNpmOutput.dependencies.astro;
return astro ? `v${astro.dependencies[name].version}` : undefined;
} catch {
return undefined;
}
}
}
Domain
Source
Frequently Asked Questions
What is the NpmPackageManager class?
NpmPackageManager is a class in the astro codebase, defined in packages/astro/src/cli/info/infra/npm-package-manager.ts.
Where is NpmPackageManager defined?
NpmPackageManager is defined in packages/astro/src/cli/info/infra/npm-package-manager.ts at line 9.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free