创建用于打包数据blob的NPM包



目标

要创建一个npm包,

  • 导出单个常量data,它是JS对象的数组,例如
const export data = [{a:1, b:2}, {a:3, b:4}];
  • 在浏览器节点中工作(但如果只有一个可能,则首选浏览器)
  • 是最小尺寸

我尝试了什么

我有一个可用的Node实现,它使用Parcel构建。它打包了一个数据文件(.csv)和一个index.js,后者在运行时读取(使用d3)并解析(使用fs)csv为常量变量data。这在节点中运行良好。

问题

捆绑版本失败,因为依赖于仅作为Node的fs。所以我想知道:

  1. 是否有适合fs的浏览器友好的替代方案(我不知道)
  2. 是否有一种更好、肯定更直接的方式来打包这样的一致性数据。感觉就像我在重新发明许多轮子,带来不必要的痛苦

包裹或其他捆绑商对此完全是小题大做。你所需要的只是一个小脚本,它采取以下步骤:

  • 使用一些CSV解析器将CSV读取到所需的结构中
  • 使用以下方法在当前目录index.js中写入一个文件:
fs.writeFileSync('./index.js', `export const data = ${JSON.stringify(myData)};`):

然后,重要的部分是,在发布包之前,在构建时执行此操作。发布的包只需要生成的文件,而不需要csv或构建脚本或任何依赖项。

您可以从另一个JS文件导出字符串,而不是将CSV放在.csv文件中,例如data.js:

export default `[paste csv here]`

然后简单地导入并使用该文件:

import csv from "./data"

这很好,因为捆绑后CSV在同一个文件中,但不会打乱代码。

或者,我发现了一个npm包,它是一个包裹插件,可能会为你做这件事:https://www.npmjs.com/package/parcel-transformer-csv

相关内容

  • 没有找到相关文章

最新更新