有没有方法或库可以告诉require'd模块在哪里解决,特别是它可能包含哪些二进制文件?
例如,当我需要('coffee-script')时,(AFAIK)无法告诉其安装目录以及它具有哪些命令行二进制文件.
理想情况下我需要的是require和package.json解析器之间的某种混合,例如跟随低位的'npminfo'库.
var npminfo = require('npminfo')
// get info about module
var pkginfo = npminfo.resolve('coffee-script')
pkginfo.version => '1.1.0'
pkginfo.path => '/home/teemu/node_modules/coffee-script'
pkginfo.bins => { coffee: '/home/teemu/node_modules/coffee-script/bin/coffee', cake: '/home/teemu/node_modules/coffee-script/bin/cake'}
// generic info
npminfo.binpath => '/home/teemu/.node_modules/bin'
Run Code Online (Sandbox Code Playgroud)
我确实尝试使用require.paths并浏览目录,但由于某种原因,它不包含我的模块实际安装的路径.不知何故要求仍然发现它们?
~ $ node
> require.paths
[ '/Users/teemuikonen/.node_modules',
'/Users/teemuikonen/.node_libraries',
'/usr/local/lib/node' ]
>
~ $ ls /usr/local/lib/node
wafadmin
~ $ ls .node_modules/
ls: .node_modules: No such file or directory
~ $ ls node_modules/
cli cradle coffee-script ...
Run Code Online (Sandbox Code Playgroud)
谢谢
使用require.resolve('module')来获取路径
require在每个级别查找名为node_modules的文件夹.这不会显示在require.paths()中,但我不确定原因.
更新:这将记录modules文件夹中的文件
var fs = require('fs');
var path = require('path');
var path1 = require.resolve('module');
path1 = path.dirname(path1);
fs.readdir(path1, function(err, files){
console.log(err);
console.log(files);
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2453 次 |
| 最近记录: |