18

我正在尝试将StencilStorybook集成到同一个项目中。我一直在关注这个设置指南,但是其中一个步骤是将组件库发布到 NPM,这不是我想要的

我有这个repo,我用组件库(src文件夹)和这些组件的审阅者配置了 Storybook,它位于storybook文件夹中。

问题是,当我使用 Stencil 编译组件并复制distStorybook 应用程序中的文件夹并导入组件时,没有任何渲染。使用自定义头部标签调整配置我能够正确导入它,但是没有应用样式。

当我打开网络面板时,导入组件时出现一些错误:

控制台错误

因此该组件存在于 DOM 中,但可见性设置为隐藏,我认为它在出现错误时会这样做。

这是组件au-button

import { Component } from '@stencil/core';

@Component({
  tag: 'au-button',
  styleUrl: 'button.css',
  shadow: true
})
export class Button {
  render() {
    return (
      <button class="test">Hello</button>
    );
  }
}

这是我的组件的故事:

import React from 'react';
import { storiesOf } from '@storybook/react';

import '../components/components.js'

storiesOf('Button', module)
  .add('with text', () => <au-button></au-button>)

这些是 Storybook 应用程序中的脚本:

"scripts": {
    "storybook": "start-storybook -p 9009",
    "build-storybook": "build-storybook",
    "copy": "cp -R ./../dist/* components"
  },

工作流程如下:

  1. 推出故事书
  2. 在组件中进行更改
  3. 执行构建命令
  4. 执行复制命令

另外,我想自动化开发人员体验,但在我先解决了这个问题之后。

关于我可能做错了什么的任何想法?

4

3 回答 3

2

可以在 repo https://github.com/shanmugapriyaEK/stencil-storybook中找到此示例。它使用旋钮和注释自动生成故事。它也有自定义主题。希望能帮助到你。

于 2019-07-30T10:41:48.083 回答
1

我正在使用@storybook/polymer它,它对我很有用。

按照你的例子:

import { Component } from '@stencil/core';

@Component({
  tag: 'au-button',
  styleUrl: 'button.css',
  shadow: true
})
export class Button {
  render() {
    return (
      <button class="test">Hello</button>
    );
  }
}

故事是:

import { storiesOf } from '@storybook/polymer';

storiesOf('Button', module)
  .add('with text', () => <au-button></au-button>)

中的脚本package.json

"scripts": {
    "storybook": "start-storybook -p 9001 -c .storybook -s www"
  },

故事书配置文件:

import { configure, addDecorator } from '@storybook/polymer';
const req = require.context('../src', true, /\.stories\.js$/);
function loadStories() {
  req.keys().forEach((filename) => req(filename))
}
configure(loadStories, module);

和故事书preview-head.html,您必须在正文中添加以下内容:

<body>
    <div id="root"></div>
    <div id="error-message"></div>
    <div id="error-stack"></div>
</body>
于 2019-02-05T10:24:54.617 回答
0

我一直在关注这个设置指南,但是其中一个步骤是将组件库发布到 NPM,这不是我想要的。

我对这些指南的阅读是,他们将“发布到 NPM”作为一种将文件放在已知 URL 上的方式,这将最容易进行部署。

如果不这样做,您将需要找出不同的部署策略。您将如何发布构建产品(dist目录和static文件),以便您的 HTML 能够在已知 URL 上引用它?通过选择偏离指南,这就是您必须手动解决的问题。

不是无法克服的问题,但没有通用的解决方案。您选择(出于您自己的原因)拒绝操作指南提供的解决方案,这意味着您接受“我知道我想要什么”的外衣:-)

于 2018-05-12T09:31:23.687 回答