cross-import
Version:
Import .ts, .mjs, .cjs files across environments as JavaScript modules
38 lines (33 loc) • 1.2 kB
JavaScript
/* 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 };