You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Storybook React应用中嵌入StencilJS组件(无需发布至NPM)

我太懂这种不想走NPM发布流程、只想本地搞定Stencil和Storybook集成的需求了!你已经搭好了src组件库和storybook目录,卡在编译后复制dist这一步?其实完全可以绕开手动复制,甚至不用发布,直接本地引用就行,我给你梳理几个实用的解决办法:

解决Stencil + Storybook本地集成(无需发布NPM)的问题

1. 先调整Stencil的编译配置

首先确保你的stencil.config.ts输出的产物方便Storybook访问,比如保留dist输出目标,同时开启适合前端导入的格式:

export const config: Config = {
  namespace: 'your-components',
  outputTargets: [
    {
      type: 'dist',
      esmLoaderPath: '../loader',
    },
    {
      type: 'dist-custom-elements', // 如果你用自定义元素模式,这个很有用
      dir: './dist/custom-elements',
    },
    // 保留你需要的其他输出目标,比如文档、类型定义等
  ],
};

2. 直接本地引用编译后的组件,不用复制dist

其实完全没必要手动复制dist目录到Storybook里,直接在Storybook配置或故事文件里引用本地编译产物就好:

  • 全局注册所有组件:在.storybook/preview.js里添加组件注册代码
import { defineCustomElements } from '../dist/custom-elements/loader';

// 全局注册所有自定义元素
defineCustomElements(window);
  • 按需导入单个组件:在特定的故事文件里直接引入组件的JS文件
// 比如你的按钮组件
import '../dist/components/your-button/your-button.js';

3. 如果坚持要自动复制dist,用脚本代替手动操作

要是你还是想把dist目录同步到Storybook目录下,别手动复制了,写个npm脚本自动完成,避免路径或权限问题:
在package.json的scripts里添加:

{
  "scripts": {
    "build:components": "stencil build",
    "copy:dist": "cp -r dist storybook/public/", // 类Unix系统用这个
    // Windows系统换成:"xcopy dist storybook\\public\\dist /E /I /Y"
    "build:storybook": "npm run build:components && npm run copy:dist && storybook build"
  }
}

之后运行npm run build:storybook就会自动先编译组件、复制dist,再构建Storybook,全程不用手动干预。

4. 给Storybook配置静态资源路径

最后确保Storybook能识别到你的dist目录,在.storybook/main.js里添加静态资源配置:

module.exports = {
  stories: ['../src/**/*.stories.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'],
  addons: ['@storybook/addon-links', '@storybook/addon-essentials'],
  staticDirs: ['../dist'], // 把dist目录设为静态资源目录
};

按照这些步骤操作,你就能在本地直接运行Storybook预览Stencil组件,完全不用发布到NPM。如果还有具体的报错信息(比如复制时的路径找不到、权限错误),可以再针对性排查,但这些步骤应该能解决你当前的核心问题。

内容的提问来源于stack exchange,提问作者César Alberca

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:10:17