UNPKG

astro

Version:

Astro is a modern site builder with web best practices, performance, and DX front-of-mind.

30 lines (29 loc) • 773 B
export class NpmPackageManager { name = "npm"; #commandExecutor; constructor({ commandExecutor }) { this.#commandExecutor = commandExecutor; } async getPackageVersion(name) { 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); 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; } } }