Node.js 在节点依赖关系中查找特定文件位置的最佳方法?

Node.js 在节点依赖关系中查找特定文件位置的最佳方法?,node.js,npm,Node.js,Npm,我正在尝试访问包含在节点依赖项中的文件。以前我是以require('../../node\u modules/foo/bar.png')的形式硬编码访问此文件的,但是npm v3无法依赖此路径,因为在node\u modules文件夹层次结构中,给定依赖项所在的位置可能会更改require.resolve似乎对我没有帮助,因为它提供了依赖项中的主文件,而不仅仅是依赖项的文件夹。假设您正在编写这两个模块,您可以从依赖项中使用u dirname来获取模块运行的路径: //foo/index.js m

我正在尝试访问包含在节点依赖项中的文件。以前我是以
require('../../node\u modules/foo/bar.png')
的形式硬编码访问此文件的,但是npm v3无法依赖此路径,因为在node\u modules文件夹层次结构中,给定依赖项所在的位置可能会更改
require.resolve
似乎对我没有帮助,因为它提供了依赖项中的主文件,而不仅仅是依赖项的文件夹。

假设您正在编写这两个模块,您可以从依赖项中使用u dirname来获取模块运行的路径:

//foo/index.js
module.exports.root = __dirname;
然后用它来提供文件:

//server.js
var assets = require('foo');
fs.readFile(assets.root + '/bar.png', function(){/*whatever*/});
我的解决方案是使用并断言每个文件

dive(directory[, options], action[, complete]);

在各种开源项目中,我在github上发现的一个常见解决方案是使用/,即


为什么需要从依赖项中提取资产?在我能想到的任何情况下,最好是链接到他们网站上的图像,或者简单地将图像拉出并放在项目中的某个位置。项目A是一个服务器包,设计用于设置服务器,然后为项目B服务。用户应该能够在全球范围内安装A,而不必担心使用B进行设置,因此,将B作为一个依赖项发送,那么项目B应该以某种合理的方式提供资源。
var findup = require('findup-sync');
var filePath = findup('node_modules/foo/bar.png');