Skip to content

Instantly share code, notes, and snippets.

@NagayamaRyoga
Created September 10, 2023 11:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save NagayamaRyoga/1632acfae102d28b7205026b9d52d099 to your computer and use it in GitHub Desktop.
Save NagayamaRyoga/1632acfae102d28b7205026b9d52d099 to your computer and use it in GitHub Desktop.
// ~/.config/zeno/scripts/package-manager.ts
import { dirname } from "https://deno.land/std/path/mod.ts";
const detectPackageManager = async (path: string) => {
const packageManagers = [
{ name: "npm", lockFile: "package-lock.json" },
{ name: "yarn", lockFile: "yarn.lock" },
{ name: "pnpm", lockFile: "pnpm-lock.yaml" },
];
for (let dir = path; ; ) {
for (const { name, lockFile } of packageManagers) {
try {
const info = await Deno.lstat(`${dir}/${lockFile}`);
if (info.isFile) {
return name;
}
} catch (err) {
// ignore
}
}
const parent = dirname(dir);
if (parent === dir) {
break;
}
dir = parent;
}
return "npm";
};
console.log(await detectPackageManager(Deno.cwd()));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment