0

我创建的 Storybook 插件有问题。

当前情景

当从包含需要具有动态路径的 .md文件其他函数(例如README.md文件)

库文件

const getSomeData = () => {
  ...
  return ...
}

export const getPackageReadme = (packageName: string) => {
  try {
    return require(`@namespace/${packageName}/README.md`)
  } catch {
    return null
  }
}

这些动态要求将这些.md文件导入为README.md,由 Storybook 引擎在编译时执行。

奇怪的事实是,在 Storybook 的日志中,似乎执行了这个函数并读取了所有.md文件,其名称为README.md,存在于当前存储库中的任何地方,也在 node_modules 中,给出了准确数量的错误作为数量在当前存储库中找到的所有 README.md 文件。结果,Storybook 构建失败。

虽然此错误发生在 Storybook 的编译时,但在浏览器运行时会出现任何问题并且一切都按预期工作。

当前解决方案

当前解决该问题的解决方案(闻起来像钩子)是将此 lib.ts 拆分为不同的文件(例如lib-md.tslib-data.ts)。通过这种方式,Storybook 插件只包含lib-data.ts并且在这种方式下,编译时需要任何README.md文件,因此构建成功。

库数据.ts

const getSomeData = () => {
  ...
  return ...
}

lib-md.ts

export const getPackageReadme = (packageName: string) => {
  try {
    return require(`@namespace/${packageName}/README.md`)
  } catch {
    return null
  }
}

有没有办法防止这个错误?

4

0 回答 0