storybook [Bug]: Story Indexer不支持类型:docs

wwtsj6pe  于 3个月前  发布在  其他
关注(0)|答案(2)|浏览(73)

描述bug

如果故事索引器返回type: docs,那么这个会被忽略,并被添加为type: story,参见storybook/code/core/src/core-server/utils/StoryIndexGenerator.ts文件的第369行。
| | type: 'story', |

复现链接

tobiasdiez/storybook-vue-addon#118 (见代码)

复现步骤

  • 无响应*

系统

Latest storybook

附加上下文

  • 无响应*
ubby3x7f

ubby3x7f1#

免责声明:由于信息是自动生成的,可能存在不准确的情况。
要解决故事索引器不支持 type: docs 的问题,请按照以下步骤操作:

  1. 更新 extractStories 方法:
    修改 StoryIndexGenerator.ts 中的 extractStories 方法,以正确处理具有 type: docs 的条目。
const entries: ((StoryIndexEntryWithExtra | DocsCacheEntry) & { tags: Tag[] })[] = indexInputs.map((input) => {
  const name = input.name ?? storyNameFromExport(input.exportName);
  const componentPath = input.rawComponentPath && this.resolveComponentPath(input.rawComponentPath, absolutePath, matchPath);
  const title = input.title ?? defaultMakeTitle();
  const id = input.__id ?? toId(input.metaId ?? title, storyNameFromExport(input.exportName));
  const tags = combineTags(...projectTags, ...(input.tags ?? []));

  return {
    type: input.type || 'story', // Ensure type is correctly set
    id,
    extra: {
      metaId: input.metaId,
      stats: input.__stats ?? {},
    },
    name,
    title,
    importPath,
    componentPath,
    tags,
  };
});
  1. 更新测试:
    确保 StoryIndexGenerator.test.ts 中的测试覆盖了索引器返回 type: docs 的场景。
it('handles entries with type: docs correctly', async () => {
  const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry('./src/docs/*.mdx', options);
  const generator = new StoryIndexGenerator([specifier], autodocsOptions);
  await generator.initialize();

  const { storyIndex } = await generator.getIndexAndStats();
  expect(storyIndex.entries['docs-entry-id'].type).toBe('docs');
});

参考资料

/.github/DISCUSSION_TEMPLATE/help.yml
/.github/DISCUSSION_TEMPLATE/ideas.yml
/.github/comments/invalid-link.md
/code/core/src/core-server/utils/summarizeIndex.test.ts
/code/core/src/preview-errors.ts
/code/addons/docs/angular
/test-storybooks/ember-cli/ember-output/storybook-docgen
/.github/comments
/.github/DISCUSSION_TEMPLATE/rfc.yml
/docs/_snippets/test-runner-with-index-json.md
/code/core/src/core-server/utils/StoryIndexGenerator.test.ts
/code/addons/docs/ember
/docs/_snippets/test-runner-no-index-json.md
/code/core/src/core-server/utils/mockdata/errors/NoMeta.stories.ts
/docs/_snippets/main-config-indexers-jsonstories.md
/docs/_snippets/storybook-preview-with-angular-polyfills.md
/code/lib/cli-storybook/project.json
/code/frameworks/ember/src/client/preview/docs
/code/lib/cli/src/automigrate/fixes/mdx-gfm.ts
/code/addons/docs/template/stories/docspage
/code/core/src/csf-tools/CsfFile.test.ts
/code/addons/storysource
/code/core/src/server-errors.ts
/code/addons/docs/react
/code/core/src/csf-tools/ConfigFile.test.ts

关于 Greptile

此响应为您提供研究的起点,而非精确解决方案。
帮助我们改进!如果这有帮助,请留下一个👍,如果无关紧要,请留下一个👎。

9njqaruj

9njqaruj2#

很遗憾,我们从未成功实现索引器的这一部分,这也是为什么它仍然是实验性的。感谢打开这个。

相关问题