diff --git a/.changeset/cool-goats-kiss.md b/.changeset/cool-goats-kiss.md new file mode 100644 index 0000000..67dfb39 --- /dev/null +++ b/.changeset/cool-goats-kiss.md @@ -0,0 +1,5 @@ +--- +"@manypkg/find-root": patch +--- + +Remove find-up dependency diff --git a/packages/find-root/package.json b/packages/find-root/package.json index 6753b08..78f320b 100644 --- a/packages/find-root/package.json +++ b/packages/find-root/package.json @@ -11,7 +11,6 @@ "module": "dist/manypkg-find-root.esm.js", "dependencies": { "@manypkg/tools": "^1.1.1", - "find-up": "^4.1.0", "fs-extra": "^8.1.0" }, "devDependencies": { diff --git a/packages/find-root/src/index.ts b/packages/find-root/src/index.ts index 072138d..6850fb8 100644 --- a/packages/find-root/src/index.ts +++ b/packages/find-root/src/index.ts @@ -1,4 +1,3 @@ -import findUp, { sync as findUpSync } from "find-up"; import path from "path"; import fs from "fs-extra"; @@ -98,7 +97,7 @@ export async function findRoot( } }); }, - { cwd, type: "directory" } + cwd ); if (monorepoRoot) { @@ -123,7 +122,7 @@ export async function findRoot( } } }, - { cwd, type: "directory" } + cwd ); if (!rootDir) { @@ -158,7 +157,7 @@ export function findRootSync( } } }, - { cwd, type: "directory" } + cwd ); if (monorepoRoot) { @@ -177,7 +176,7 @@ export function findRootSync( const exists = fs.existsSync(path.join(directory, "package.json")); return exists ? directory : undefined; }, - { cwd, type: "directory" } + cwd ); if (!rootDir) { @@ -189,3 +188,31 @@ export function findRootSync( rootDir, }; } + +async function findUp(matcher: (directory: string) => Promise, cwd: string) { + let directory = path.resolve(cwd); + const { root } = path.parse(directory); + + while (directory && directory !== root) { + const filePath = await matcher(directory); + if (filePath) { + return path.resolve(directory, filePath); + } + + directory = path.dirname(directory); + } +} + +function findUpSync(matcher: (directory: string) => string | undefined, cwd: string) { + let directory = path.resolve(cwd); + const { root } = path.parse(directory); + + while (directory && directory !== root) { + const filePath = matcher(directory); + if (filePath) { + return path.resolve(directory, filePath); + } + + directory = path.dirname(directory); + } +}