UNPKG

parcel-bundler

Version:

Blazing fast, zero configuration web application bundler

28 lines (23 loc) 670 B
const {dirname} = require('path'); const resolve = require('resolve'); const install = require('./installPackage'); const cache = new Map(); async function localRequire(name, path, triedInstall = false) { let basedir = dirname(path); let key = basedir + ':' + name; let resolved = cache.get(key); if (!resolved) { try { resolved = resolve.sync(name, {basedir}); } catch (e) { if (e.code === 'MODULE_NOT_FOUND' && !triedInstall) { await install([name], path); return localRequire(name, path, true); } throw e; } cache.set(key, resolved); } return require(resolved); } module.exports = localRequire;