UNPKG

cross-import

Version:

Import .ts, .mjs, .cjs files across environments as JavaScript modules

38 lines (33 loc) 1.2 kB
/* Techor ESM Shim */ import __url_for_shim from 'url'; import __path_for_shim from 'path'; import __mod_for_shim from 'module'; const __filename = __url_for_shim.fileURLToPath(import.meta.url); const __dirname = __path_for_shim.dirname(__filename); const require = __mod_for_shim.createRequire(import.meta.url); import { createJiti } from 'jiti'; function crossImport(modulePath) { if (!modulePath) return; /** try to delete cache first */ try { if (require.cache[modulePath]) { delete require.cache[modulePath]; if (process.env.DEBUG) console.log('[cross-import] cache deleted'); } } catch {} try { if (process.env.DEBUG) console.log('[cross-import] require:', modulePath); return require(modulePath); } catch (error) { if (process.env.DEBUG) { console.error(error); console.log('[cross-import] fall back to jiti runtime transform:', modulePath); } return createJiti(__dirname, { cache: false, debug: !!process.env.DEBUG, fsCache: false, moduleCache: false })(modulePath); } } export { crossImport as default };