在 Storybook Vue 中导入节点模块

Posted

技术标签:

【中文标题】在 Storybook Vue 中导入节点模块【英文标题】:Import node module in Storybook Vue 【发布时间】:2021-08-13 02:00:51 【问题描述】:

我希望所有故事都具有 elementPlus 的样式,但它没有正确导入。我试图用一个包装器来做,但它实际上并没有使用 elementPlus。如何在所有故事中加载 elementPlus?

Preview.js:

import elementPlus from 'element-plus';
import  addDecorator  from '@storybook/vue3';

addDecorator(() => (
  template: '<div style="color: red;"><elementPlus><story/></elementPlus></div>',
));

Main.js:

const path = require('path');

module.exports = 
  stories: [
    '../src/**/*.stories.mdx',
    '../src/**/*.stories.@(js|jsx|ts|tsx)',
    '../plugins/**/*.stories.@(js|jsx|ts|tsx)',
    '../plugins/**/*.stories.mdx',
  ],
  addons: [
    '@storybook/addon-links',
    '@storybook/addon-essentials',
  ],
  webpackFinal: async (config,  configType ) => 
    config.module.rules.push(
      test: /\.s?css$/,
      use: [
         loader: 'style-loader' ,
        
          loader: 'css-loader',
          options: 
            modules: false
          
        ,
         loader: 'sass-loader' 
      ],
      include: path.resolve(__dirname, "../"),
    );

    return config;
  ,
;

【问题讨论】:

【参考方案1】:

我尝试将 element-plus 设置为全局。

@storybook/vue3: "^6.3.8" @vue/cli-service:“~4.5.0” 元素加:“^1.1.0-beta.12”

Preview.js:

import ElementPlus from 'element-plus';
import '../node_modules/element-plus/theme-chalk/index.css';
import  storybookApp  from '../node_modules/@storybook/vue3/dist/esm/client/preview/render';
storybookApp.use(ElementPlus);
export const parameters = 
  actions:  argTypesRegex: "^on[A-Z].*" ,
  controls: 
    matchers: 
      color: /(background|color)$/i,
      date: /Date$/,
    ,
  ,

这不是最好的解决方案,但可以使用。

如果你有好的答案,请与我分享。谢谢!

【讨论】:

@storybook/vue3(6.4.9) 和 element-plus(1.3.0-beta.1) 不起作用

以上是关于在 Storybook Vue 中导入节点模块的主要内容,如果未能解决你的问题,请参考以下文章

在 Angular 2 应用程序中导入节点 js 模块

如何在下一个 js 中从节点模块外部的文件夹中导入模块

如何在打字稿项目中导入节点模块。 ERR_REQUIRE_ESM

尝试在 Django 应用程序的 js 文件中导入 vue.js 时出现“未捕获的语法错误:无法在模块外使用 import 语句”

在 Storybook 选择选项中导入道具

怎么在uniapp、index.vue中导入图片