UNPKG

spinjs

Version:

<p align="center"><a href="#"><img width="150" src="https://rawgit.com/sysgears/jsapp/master/packages/spinjs/logo.svg"></a></p>

37 lines (30 loc) 1.14 kB
import * as path from 'path'; import * as requireRelative from 'require-relative'; export interface RequireFunction { cwd: string; (name, relativeTo?): any; resolve(name, relativeTo?): string; probe(name, relativeTo?): string; } export default (cwd: string): RequireFunction => { const require: any = (name, relativeTo?): any => requireModule(name, relativeTo || cwd); require.resolve = (name, relativeTo?): string => requireModule.resolve(name, relativeTo || cwd); require.probe = (name, relativeTo?): string => requireModule.probe(name, relativeTo || cwd); require.cwd = cwd; return require; }; const requireModule: any = (name, relativeTo): any => { return name.indexOf('.') !== 0 ? requireRelative(name, relativeTo) : require(path.join(relativeTo, name)); }; requireModule.resolve = (name, relativeTo): string => { return name.indexOf('.') !== 0 ? requireRelative.resolve(name, relativeTo) : require.resolve(path.join(relativeTo, name)); }; requireModule.probe = (name, relativeTo): string => { try { return requireModule.resolve(name, relativeTo); } catch (e) { return null; } };