UNPKG

paw

Version:

paw.require, your modules

56 lines (45 loc) 1.17 kB
var fs = require('fs'); var path = require('path'); function findModule(dir, filename) { var pwd = dir; var mod = null; do { dir = pwd; var mdir = path.resolve(pwd, 'modules'); if ( fs.existsSync( mdir ) && (mod = getModule(mdir, filename)) ) { return mod; } pwd = path.resolve(pwd, '..' ); } while ( pwd != dir ); } function getModule (mdir, filename) { var mod = null; ['', '.js', '.json'].forEach(function(ext) { var fpath = path.resolve(mdir, filename); if (!mod && fs.existsSync(fpath + ext)) { mod = require(fpath + ext); } }); return mod; } /** * require modules->node_modules * @return {Module} */ exports.require = function (name, pwd) { var pwd = pwd || __dirname; var cwd = process.cwd(); var mod = findModule(cwd, name); if (!mod && cwd != pwd) { mod = findModule(pwd, name); } // 如果寻址失败,从node_modules 中寻找 if (!mod) { try { mod = require(name); } catch() { console.error(name, 'not found'); } } return mod; };