aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/packages/turbo-codemod/src/utils/getPackageManager.ts
diff options
context:
space:
mode:
author简律纯 <hsiangnianian@outlook.com>2023-04-28 01:36:44 +0800
committer简律纯 <hsiangnianian@outlook.com>2023-04-28 01:36:44 +0800
commitdd84b9d64fb98746a230cd24233ff50a562c39c9 (patch)
treeb583261ef00b3afe72ec4d6dacb31e57779a6faf /packages/turbo-codemod/src/utils/getPackageManager.ts
parent0b46fcd72ac34382387b2bcf9095233efbcc52f4 (diff)
downloadHydroRoll-dd84b9d64fb98746a230cd24233ff50a562c39c9.tar.gz
HydroRoll-dd84b9d64fb98746a230cd24233ff50a562c39c9.zip
Diffstat (limited to 'packages/turbo-codemod/src/utils/getPackageManager.ts')
-rw-r--r--packages/turbo-codemod/src/utils/getPackageManager.ts42
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];
+}