UNPKG

976 BPlain TextView Raw
1import path from "path";
2
3import { createRequire } from "module";
4const require = createRequire(import.meta.url);
5
6export default function (moduleName, dirname, absoluteRuntime) {
7 if (absoluteRuntime === false) return moduleName;
8
9 return resolveAbsoluteRuntime(
10 moduleName,
11 path.resolve(dirname, absoluteRuntime === true ? "." : absoluteRuntime),
12 );
13}
14
15function resolveAbsoluteRuntime(moduleName: string, dirname: string) {
16 try {
17 return path
18 .dirname(
19 require.resolve(`${moduleName}/package.json`, { paths: [dirname] }),
20 )
21 .replace(/\\/g, "/");
22 } catch (err) {
23 if (err.code !== "MODULE_NOT_FOUND") throw err;
24
25 throw Object.assign(
26 new Error(`Failed to resolve "${moduleName}" relative to "${dirname}"`),
27 {
28 code: "BABEL_RUNTIME_NOT_FOUND",
29 runtime: moduleName,
30 dirname,
31 },
32 );
33 }
34}
35
36export function resolveFSPath(path) {
37 return require.resolve(path).replace(/\\/g, "/");
38}