33 lines
815 B
JavaScript
33 lines
815 B
JavaScript
class NpmPackageManager {
|
|
name = "npm";
|
|
#commandExecutor;
|
|
constructor({ commandExecutor }) {
|
|
this.#commandExecutor = commandExecutor;
|
|
}
|
|
async getPackageVersion(name) {
|
|
try {
|
|
const { stdout } = await this.#commandExecutor.execute(
|
|
"npm",
|
|
["ls", name, "--json", "--depth=1"],
|
|
{
|
|
shell: true
|
|
}
|
|
);
|
|
const parsedNpmOutput = JSON.parse(stdout);
|
|
if (!parsedNpmOutput.dependencies) {
|
|
return void 0;
|
|
}
|
|
if (parsedNpmOutput.dependencies[name]) {
|
|
return `v${parsedNpmOutput.dependencies[name].version}`;
|
|
}
|
|
const astro = parsedNpmOutput.dependencies.astro;
|
|
return astro ? `v${astro.dependencies[name].version}` : void 0;
|
|
} catch {
|
|
return void 0;
|
|
}
|
|
}
|
|
}
|
|
export {
|
|
NpmPackageManager
|
|
};
|