From 70dad0f6004d14bfa96f76908c56f6bba7bd9f16 Mon Sep 17 00:00:00 2001 From: xingyu4j Date: Sun, 15 Mar 2026 20:50:07 +0800 Subject: [PATCH] fix(node-utils): avoid find-up sync API in monorepo root lookup --- internal/node-utils/src/monorepo.ts | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/internal/node-utils/src/monorepo.ts b/internal/node-utils/src/monorepo.ts index d0c384f50..33246c683 100644 --- a/internal/node-utils/src/monorepo.ts +++ b/internal/node-utils/src/monorepo.ts @@ -1,24 +1,31 @@ import type { Package } from '@manypkg/get-packages'; -import { dirname } from 'node:path'; +import { existsSync } from 'node:fs'; +import { dirname, join, resolve } from 'node:path'; import * as manypkg from '@manypkg/get-packages'; -import * as findUp from 'find-up'; - const { getPackages: getPackagesFunc, getPackagesSync: getPackagesSyncFunc } = manypkg; -const { findUpSync } = findUp; /** * 查找大仓的根目录 * @param cwd */ function findMonorepoRoot(cwd: string = process.cwd()) { - const lockFile = findUpSync('pnpm-lock.yaml', { - cwd, - type: 'file', - }); - return dirname(lockFile || ''); + let currentDir = resolve(cwd); + + while (true) { + if (existsSync(join(currentDir, 'pnpm-lock.yaml'))) { + return currentDir; + } + + const parentDir = dirname(currentDir); + if (parentDir === currentDir) { + return ''; + } + + currentDir = parentDir; + } } /**