Home / Class/ PnpmPackageManager Class — astro Architecture

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

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