如何使用节点模块打包资产
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 };
我正在尝试将一些模拟数据包含在节点模块(模块 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 };