storybook [BUG]纤细的自定义元素不起作用

ctzwtxfj  于 2022-10-29  发布在  其他
关注(0)|答案(8)|浏览(197)

描述Bug

如果将svelte与自定义元素一起使用,则必须在main.js中设置customElement: true
如果使用svelte CSF配置,这会破坏Storybook的UI。(由于加载程序在此存储库中,因此我在此处打开问题)。
Svelte CSF配置也有.svelte结尾,因此被svelte加载程序拾取,并使用customElement: true编译,这是错误的。它们不应该。svelte编译器的main.js中的设置应该只匹配实际组件,而不是ABC.stories.svelte

重现

检查存储库,没有找到故事,甚至设置。如果你在main.js中设置customElement: false。它工作。但这样自定义元素就不能正确显示。
https://github.com/alexanderniebuhr/playground-storybook的最大值

预期行为

svelte component作为自定义元素,svelte story作为普通svelte。然后我希望有这样的选项来使用组件:(这是必要的,以便故事书的代码预览正确显示“f按钮”,并且复制和粘贴可以正常工作)

<script>
  import { Meta, Template, Story } from "@storybook/addon-svelte-csf";
  import "./Button.svelte";
</script>

<Meta
  title="Example/Button"

  !!!! IMPORTANT !!!!
  component="f-button"

  argTypes={{
    label: { control: "text" },
    primary: { control: "boolean" },
    backgroundColor: { control: "color" },
    size: {
      control: { type: "select", options: ["small", "medium", "large"] },
    },
    onClick: { action: "onClick" },
  }}
/>

<Template let:args>

   !!!! IMPORTANT !!!!
  <f-button {...args} on:click={args.onClick} />

</Template>

<Story
  name="Primary"
  args={{
    primary: true,
    label: "Button",
  }}
/>

系统

系统:
操作系统:Windows 10
CPU:(24)x64 AMD锐龙9 3900 XT 12核处理器
二进制文件:
节点:15.12.0 - C:\程序文件\节点\节点. EXE
npm:7.6.0 - C:\程序文件\节点\npm.CMD
浏览器:
边缘:斯巴达(44.21343.1000.0),铬(89.0.774.63)
npm程序包:
@故事书/附加动作:=6.2.0-rc.11〉关于我们
@故事书/附加-必需品:=6.2.0-rc.11〉关于我们
@故事书/附加链接:=6.2.0-rc.11〉关于我们
@故事书/插件-苗条-csf:^1.0.0 =大于1.0.0
@故事书/苗条:=6.2.0-rc.11〉关于我们

其他上下文

这可能是一个好的方法,不建立故事.svelte文件与svelte选项加载器,建议在这里:
(评论)

qcbq4gxm

qcbq4gxm1#

UPDATE:这是我正在讨论的代码部分,在这里我需要显示在component中定义的标记,

<svelte:options tag="f-button" />

blmhpbnm

blmhpbnm2#

作为一种解决方法,你可以添加你自己的svelte-loader,它只编译你的组件的自定义元素。你不能编译自定义元素<Meta/>或其他内部svelte类。

3htmauhk

3htmauhk3#

@j3rem1e我知道这一点。这就是为什么加载器选项,只需要用于非stories.svelte文件。
使用以下配置并仍能获得正确代码的解决方案是什么(见上面的屏幕截图)

"svelteOptions": {
    "loader": {
      compilerOptions: {
        customElement: false
      }
    }
  }
gojuced7

gojuced74#

我说的不是svelteOptions.loader,而是一个自定义的webpackFinal,它创建了另一个svelte-loader的示例,其中有另一组测试规则,目标是你想编译成自定义元素的组件。

iqih9akk

iqih9akk5#

@j3rem1e好的。
在UI中的故事书文档的代码预览中是否还有一个更改命名的选项。
我喜欢用旧的方式导入它,但不是显示Button,而是给它一个设置,将f-button显示为标记?

monwx1rj

monwx1rj6#

@j3rem1e无法按照您建议的方式工作。如何使用svelte自定义元素?您有文档或示例吗?

ojsjcaue

ojsjcaue7#

我刚刚发布了https://github.com/storybookjs/storybook/releases/tag/v6.3.0-alpha.22,其中包含引用此问题的PR #14855。今天就升级到@next NPM标签来试试吧!

npx sb upgrade --prerelease

正在关闭此问题。如果您认为仍有其他工作要做,请重新打开。

nkhmeac6

nkhmeac68#

@shilman,@j3rem1e实际上我认为你在发行号上打错了。
不过我可能有一些更好的消息给你...它似乎工作得更好了,现在还没有固定...也许你可以直接帮助我

docs中代码段的tag名称是如何生成的?说到<Button type="primary"/>,我没说过应该叫Button
UPDATE:它是根据文件名生成的。如何覆盖该标记名?!

相关问题