Home / File/ get-package-manager.ts — astro Source File

get-package-manager.ts — astro Source File

Architecture documentation for get-package-manager.ts, a typescript file in the astro codebase. 2 imports, 0 dependents.

File typescript CoreAstro RenderingEngine 2 imports 1 functions

Entity Profile

Dependency Diagram

graph LR
  22c0ddd6_f345_a556_028e_2b30a6946666["get-package-manager.ts"]
  7db42c05_e873_0887_a39f_34451c181149["../definitions.js"]
  22c0ddd6_f345_a556_028e_2b30a6946666 --> 7db42c05_e873_0887_a39f_34451c181149
  f458772b_5926_6ea0_4412_a27162311db0["../definitions.js"]
  22c0ddd6_f345_a556_028e_2b30a6946666 --> f458772b_5926_6ea0_4412_a27162311db0
  style 22c0ddd6_f345_a556_028e_2b30a6946666 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import type { CommandExecutor } from '../../definitions.js';
import type { PackageManager, PackageManagerUserAgentProvider } from '../definitions.js';

interface Options {
	packageManagerUserAgentProvider: PackageManagerUserAgentProvider;
	commandExecutor: CommandExecutor;
}

export async function getPackageManager({
	packageManagerUserAgentProvider,
	commandExecutor,
}: Options): Promise<PackageManager> {
	if (!packageManagerUserAgentProvider.userAgent) {
		const { NoopPackageManager } = await import('../infra/noop-package-manager.js');
		return new NoopPackageManager();
	}
	const specifier = packageManagerUserAgentProvider.userAgent.split(' ')[0];
	const _name = specifier.substring(0, specifier.lastIndexOf('/'));
	const name = _name === 'npminstall' ? 'cnpm' : _name;

	switch (name) {
		case 'pnpm': {
			const { PnpmPackageManager } = await import('../infra/pnpm-package-manager.js');
			return new PnpmPackageManager({ commandExecutor });
		}
		case 'npm': {
			const { NpmPackageManager } = await import('../infra/npm-package-manager.js');
			return new NpmPackageManager({ commandExecutor });
		}
		case 'yarn': {
			const { YarnPackageManager } = await import('../infra/yarn-package-manager.js');
			return new YarnPackageManager({ commandExecutor });
		}
		case 'bun': {
			const { BunPackageManager } = await import('../infra/bun-package-manager.js');
			return new BunPackageManager();
		}
		default: {
			const { NoopPackageManager } = await import('../infra/noop-package-manager.js');
			return new NoopPackageManager();
		}
	}
}

Domain

Subdomains

Types

Dependencies

  • ../definitions.js
  • ../definitions.js

Frequently Asked Questions

What does get-package-manager.ts do?
get-package-manager.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 get-package-manager.ts?
get-package-manager.ts defines 1 function(s): getPackageManager.
What does get-package-manager.ts depend on?
get-package-manager.ts imports 2 module(s): ../definitions.js, ../definitions.js.
Where is get-package-manager.ts in the architecture?
get-package-manager.ts is located at packages/astro/src/cli/info/core/get-package-manager.ts (domain: CoreAstro, subdomain: RenderingEngine, directory: packages/astro/src/cli/info/core).

Analyze Your Own Codebase

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

Try Supermodel Free