index.js 805 B

123456789101112131415161718192021222324252627282930
  1. import path from "path";
  2. import resolve from "resolve";
  3. export default function (moduleName, dirname, absoluteRuntime) {
  4. if (absoluteRuntime === false) return moduleName;
  5. return resolveAbsoluteRuntime(
  6. moduleName,
  7. path.resolve(dirname, absoluteRuntime === true ? "." : absoluteRuntime),
  8. );
  9. }
  10. function resolveAbsoluteRuntime(moduleName: string, dirname: string) {
  11. try {
  12. return path
  13. .dirname(resolve.sync(`${moduleName}/package.json`, { basedir: dirname }))
  14. .replace(/\\/g, "/");
  15. } catch (err) {
  16. if (err.code !== "MODULE_NOT_FOUND") throw err;
  17. throw Object.assign(
  18. new Error(`Failed to resolve "${moduleName}" relative to "${dirname}"`),
  19. {
  20. code: "BABEL_RUNTIME_NOT_FOUND",
  21. runtime: moduleName,
  22. dirname,
  23. },
  24. );
  25. }
  26. }