在节点依赖项中查找特定文件的位置的最佳方法?

时间:2015-10-05 09:00:37

标签: node.js npm

我正在尝试访问节点依赖项中包含的文件。以前我以require('../../node_modules/foo/bar.png')的形式硬编码访问此文件,但是这个路径不能依赖于npm v3作为node_modules文件夹层次结构中给定依赖关系所在的位置可能会发生变化。 require.resolve似乎对我没有帮助,因为它在依赖项中提供主文件,而不仅仅是依赖项的文件夹。

3 个答案:

答案 0 :(得分:0)

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

//foo/index.js
module.exports.root = __dirname;

然后使用它来提供文件:

//server.js
var assets = require('foo');
fs.readFile(assets.root + '/bar.png', function(){/*whatever*/});

答案 1 :(得分:0)

我的解决方案是使用https://www.npmjs.com/package/dive并断言每个文件。

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

答案 2 :(得分:0)

我在各种开源项目的github上找到的一个常见解决方案是使用findup / findup-sync,即

var findup = require('findup-sync');
var filePath = findup('node_modules/foo/bar.png');