【发布时间】:2016-08-17 04:07:42
【问题描述】:
我正在尝试在节点模块(模块 B)中包含一些模拟数据,然后能够从调用模块(模块 A)引用该数据。数据是模块B的/data目录中的一个文本文件。我在模块B上有一个函数,它使用__dirname调用数据,但是当然当从模块A调用这个函数时,__dirname引用模块的目录A...不是模块 B。
包含此类资产数据并使其在消费模块中可用的最佳方式是什么?
【问题讨论】:
我正在尝试在节点模块(模块 B)中包含一些模拟数据,然后能够从调用模块(模块 A)引用该数据。数据是模块B的/data目录中的一个文本文件。我在模块B上有一个函数,它使用__dirname调用数据,但是当然当从模块A调用这个函数时,__dirname引用模块的目录A...不是模块 B。
包含此类资产数据并使其在消费模块中可用的最佳方式是什么?
【问题讨论】:
打包模块时,您可以使用files property of package.json 将任何资产与您的模块捆绑在一起。
然后,在该模块中,您可以使用 relative 路径来引用您包含的资产。
想象一个具有这种文件结构的模块:
-assets
|-data.txt
index.js
在您的 package.json 中,您可能有一个 files 部分,如下所示:
files: [
'index.js',
'assets/data.txt'
]
在 index.js 中,您可以像这样公开您的资产数据:
let fs = import 'fs';
function getAssetData() {
return fs.readFileSync('./assets/data.txt')
}
module.exports = { getAssetData };
【讨论】: