mirror of
https://github.com/microsoft/TypeScript.git
synced 2025-12-11 09:24:19 -06:00
30 lines
868 B
JavaScript
30 lines
868 B
JavaScript
import { join, resolve, dirname } from "path";
|
|
import { existsSync } from "fs";
|
|
import url from "url";
|
|
|
|
const __filename = url.fileURLToPath(new URL(import.meta.url));
|
|
const __dirname = dirname(__filename);
|
|
|
|
// search directories upward to avoid hard-wired paths based on the
|
|
// build tree (same as src/harness/findUpDir.ts)
|
|
|
|
/**
|
|
* @param {string} name
|
|
* @returns {string}
|
|
*/
|
|
export function findUpFile(name) {
|
|
let dir = __dirname;
|
|
while (true) {
|
|
const fullPath = join(dir, name);
|
|
if (existsSync(fullPath)) return fullPath;
|
|
const up = resolve(dir, "..");
|
|
if (up === dir) return name; // it'll fail anyway
|
|
dir = up;
|
|
}
|
|
}
|
|
|
|
/** @type {string | undefined} */
|
|
let findUpRootCache;
|
|
|
|
export const findUpRoot = () => findUpRootCache || (findUpRootCache = dirname(findUpFile("Gulpfile.mjs")));
|