diff --git a/packages/core/__tests__/test-project/package-lock.json b/packages/core/__tests__/test-project/package-lock.json index 0967ef42..48050f9e 100644 --- a/packages/core/__tests__/test-project/package-lock.json +++ b/packages/core/__tests__/test-project/package-lock.json @@ -1 +1,4 @@ -{} +{ + "name": "test-project", + "lockfileVersion": 2 +} diff --git a/packages/core/src/services/PackageManagerService.spec.ts b/packages/core/src/services/PackageManagerService.spec.ts index 70f4f20a..f555af03 100644 --- a/packages/core/src/services/PackageManagerService.spec.ts +++ b/packages/core/src/services/PackageManagerService.spec.ts @@ -1,4 +1,4 @@ -import { existsSync, writeFileSync } from "fs"; +import { existsSync, unlinkSync, writeFileSync } from "fs"; import { safeExec } from "../tests/cli"; import { createProjectForTestFile, deleteTestProject } from "../tests/test-project"; import { PackageJson } from "./PackageJson"; @@ -33,6 +33,15 @@ describe("PackageManagerService", () => { }); it("should throws an error when no package manager is detectable", () => { + // Remove all lock files to ensure no package manager is detected + const lockFiles = ['package-lock.json', 'yarn.lock', 'pnpm-lock.yaml']; + lockFiles.forEach(lockFile => { + const lockFilePath = `${testProjectDir}/${lockFile}`; + if (existsSync(lockFilePath)) { + unlinkSync(lockFilePath); + } + }); + expect(() => { PackageManagerService.detectPackageManager(testProjectDir); }).toThrow(`Could not detect package manager in directory: ${testProjectDir}. No lock file found.`); diff --git a/packages/core/src/services/PackageManagerService.ts b/packages/core/src/services/PackageManagerService.ts index 5e6e78fd..30613eee 100644 --- a/packages/core/src/services/PackageManagerService.ts +++ b/packages/core/src/services/PackageManagerService.ts @@ -101,7 +101,7 @@ export class PackageManagerService { static async isPackageInstalled(packageName: string, dirPath: string): Promise { const packageManager = PackageManagerService.detectPackageManager(dirPath); - const args: string[] = [packageManager, "list", "--depth=1", "--json"]; + let args: string[] = [packageManager, "list", "--depth=1", "--json"]; switch (packageManager) { case PackageManagerType.yarn: diff --git a/packages/react/__tests__/test-project/package-lock.json b/packages/react/__tests__/test-project/package-lock.json new file mode 100644 index 00000000..48050f9e --- /dev/null +++ b/packages/react/__tests__/test-project/package-lock.json @@ -0,0 +1,4 @@ +{ + "name": "test-project", + "lockfileVersion": 2 +}