2013-02-28 27 views
1

是否有可能确定required脚本来自哪个目录?Nodejs获取`required`模块的目录

我的最终目标是...

// return the directory where `mysql` module is found 
var mysqldir = requiredir('mysql') 
if(fs.existsSync(mysqldir+"/README.md")){ 
    console.log(fs.readFileSync(mysqldir+"/README.md").toString()) 
} 

这样我就可以对所有这些模块的实用参考,并希望人们在开明的将来,将包括打算要访问模块文档/备忘这种方式

回答

4

required.resolve(...)解压的文件夹路径可能是你在找什么:

function requiredir(id) { 
    return path.dirname(require.resolve(id)); 
} 

尽管,这将按照main设置:

> requiredir('grunt') 
.../node_modules/grunt/lib/ 

另一个选项可能是使用npmview,虽然这仅限于注册包:

npm.load({}, function (err) { 
    npm.commands.view(['mysql', 'readme'], true, function (err, readme) { 
     console.log(readme); 
    }); 
}); 
+0

哇,我真的不是第一个想做这个的人..! – 2013-02-28 20:06:49