PnpmPackageManager Class — astro Architecture
Architecture documentation for the PnpmPackageManager class in pnpm-package-manager.ts from the astro codebase.
Entity Profile
Dependency Diagram
graph TD 14d9faaa_2947_8b30_11ed_1493b5e0d8cf["PnpmPackageManager"] 43935935_0d60_299d_3268_7f5b65c65ec4["pnpm-package-manager.ts"] 14d9faaa_2947_8b30_11ed_1493b5e0d8cf -->|defined in| 43935935_0d60_299d_3268_7f5b65c65ec4 cf17b22d_3a01_502f_859e_005967f06194["constructor()"] 14d9faaa_2947_8b30_11ed_1493b5e0d8cf -->|method| cf17b22d_3a01_502f_859e_005967f06194 3ea329e9_8342_912a_0889_ba8ee25da467["getPackageVersion()"] 14d9faaa_2947_8b30_11ed_1493b5e0d8cf -->|method| 3ea329e9_8342_912a_0889_ba8ee25da467
Relationship Graph
Source Code
packages/astro/src/cli/info/infra/pnpm-package-manager.ts lines 13–48
export class PnpmPackageManager implements PackageManager {
readonly name: string = 'pnpm';
readonly #commandExecutor: CommandExecutor;
constructor({ commandExecutor }: { commandExecutor: CommandExecutor }) {
this.#commandExecutor = commandExecutor;
}
async getPackageVersion(name: string): Promise<string | undefined> {
try {
// https://pnpm.io/cli/why
const { stdout } = await this.#commandExecutor.execute('pnpm', ['why', name, '--json'], {
shell: true,
});
const parsedOutput = JSON.parse(stdout) as Array<BareNpmLikeVersionOutput>;
const deps = parsedOutput[0].dependencies;
if (parsedOutput.length === 0 || !deps) {
return undefined;
}
const userProvidedDependency = deps[name];
if (userProvidedDependency) {
return formatPnpmVersionOutput(userProvidedDependency.version);
}
const astroDependency = deps.astro?.dependencies[name];
return astroDependency ? formatPnpmVersionOutput(astroDependency.version) : undefined;
} catch {
return undefined;
}
}
}
Domain
Source
Frequently Asked Questions
What is the PnpmPackageManager class?
PnpmPackageManager is a class in the astro codebase, defined in packages/astro/src/cli/info/infra/pnpm-package-manager.ts.
Where is PnpmPackageManager defined?
PnpmPackageManager is defined in packages/astro/src/cli/info/infra/pnpm-package-manager.ts at line 13.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free