如何使用节点模块打包资产

How to package assets with a node module

我正在尝试将一些模拟数据包含在节点模块(模块 B)中,然后能够从调用模块(模块 A)中引用该数据。数据是模块 B 的 /data 目录中的文本文件。我在模块 B 上有一个使用 __dirname 调用数据的函数,但是当然当从模块 A 调用此函数时, __dirname 引用模块 A 的目录...而不是模块 B。 包含这样的资产数据并使其在使用模块中可用的最佳方法是什么?

打包模块时,您可以使用 files property of package.json 将任何资产与您的模块捆绑在一起。

然后,在该模块中,您可以使用相对路径来引用您包含的资产。

想象一个具有这种文件结构的模块:

 -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 };