diff options
Diffstat (limited to 'packages/turbo-codemod/src/utils/getPackageManager.ts')
| -rw-r--r-- | packages/turbo-codemod/src/utils/getPackageManager.ts | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/packages/turbo-codemod/src/utils/getPackageManager.ts b/packages/turbo-codemod/src/utils/getPackageManager.ts new file mode 100644 index 0000000..1df0acc --- /dev/null +++ b/packages/turbo-codemod/src/utils/getPackageManager.ts @@ -0,0 +1,42 @@ +import findUp from "find-up"; +import path from "path"; + +export type PackageManager = "yarn" | "pnpm" | "npm"; + +const cache: { [cwd: string]: PackageManager } = {}; + +export default function getPackageManager({ + directory, +}: { directory?: string } = {}): PackageManager | undefined { + const cwd = directory || process.cwd(); + if (cache[cwd]) { + return cache[cwd]; + } + + const lockFile = findUp.sync( + ["yarn.lock", "pnpm-lock.yaml", "package-lock.json"], + { + cwd, + } + ); + + if (!lockFile) { + return; + } + + switch (path.basename(lockFile)) { + case "yarn.lock": + cache[cwd] = "yarn"; + break; + + case "pnpm-lock.yaml": + cache[cwd] = "pnpm"; + break; + + case "package-lock.json": + cache[cwd] = "npm"; + break; + } + + return cache[cwd]; +} |
