当前位置: 首页 > article >正文

storybook添加全局样式与sass全局变量设置

storybook组件需要全局样式,只需在.storybook/preview.js 增加全局样式即可。

import '../src/style/index.scss';
export const parameters = {
  actions: { argTypesRegex: "^on[A-Z].*" },
  controls: {
    expanded: true,
    matchers: {
      color: /(background|color)$/i,
      date: /Date$/,
    },
  },
}

但是,sass全局变量添加有麻烦。

网上查找了,大致有2种,第一种:Storybook + react + ts 配置全局样式_storybook样式_放荡的小跳蛙的博客-CSDN博客

const path = require('path')
module.exports = {
  "stories": [
    "../src/**/*.stories.mdx",
    "../src/**/*.stories.@(js|jsx|ts|tsx)"
  ],
  "addons": [
    "@storybook/addon-links",
    "@storybook/addon-essentials",
    "@storybook/preset-create-react-app"
  ],
  webpackFinal: async (config, { configType }) => {
    // `configType` has a value of 'DEVELOPMENT' or 'PRODUCTION'
    // You can change the configuration based on that.
    // 'PRODUCTION' is used when building the static version of storybook.

    // Make whatever fine-grained changes you need
    config.module.rules.push({
      test: /\.scss$/,
      use: ['style-loader', 'css-loader', 'sass-loader'],
      include: path.resolve(__dirname, '../'),
      options:{
          additionalData: `@import "${path.resolve(__dirname, '../src/style/variables.scss')}";`
      }
    });

    // Return the altered config
    return config;
  },
}

第二种,在.storybook文件夹中创建一个webpack.config.js文件解决了我的问题:

module.exports = (storybookBaseConfig, configType, defaultConfig) => {

  defaultConfig.module.rules.push(
    {
      resourceQuery: /module/,
      use: [
        {
          loader: 'vue-style-loader',
          options: {
            sourceMap: false,
            shadowMode: false
          }
        },
        {
          loader: 'css-loader',
          options: {
            sourceMap: false,
            importLoaders: 2,
            modules: true,
            localIdentName: '[name]_[local]_[hash:base64:5]'
          }
        },
        {
          loader: 'postcss-loader',
          options: {
            sourceMap: false
          }
        },
        {
          loader: 'sass-loader',
          options: {
            sourceMap: false,
            indentedSyntax: true,
            data: '@import "@/sass/_variables.scss";'
          }
        }
      ]
    }
  );

  return defaultConfig;};

但是都没有效果,

这两种方法,都需要全局安装一些loader,但是的cli 项目是不需要全局变量

所以,我就直接改了成可用的。

const path = require('path');

function resolve(dir) {
  return path.join(__dirname, dir);
}
module.exports = {
  "stories": [
    "../src/**/*.stories.mdx",
    "../src/**/*.stories.@(js|jsx|ts|tsx)"
  ],
  "addons": [
    '@storybook/preset-scss',
    "@storybook/addon-links",
    "@storybook/addon-essentials",
    "@storybook/addon-interactions"
  ],
  "framework": "@storybook/vue3",
  "core": {
    "builder": "@storybook/builder-webpack5"
  },
  webpackFinal: async (config, { configType }) => {
    // `configType` has a value of 'DEVELOPMENT' or 'PRODUCTION'
    // You can change the configuration based on that.
    // 'PRODUCTION' is used when building the static version of storybook.
    config.resolve = {
      ...config?.resolve,
      alias:{
        ...config?.resolve?.alias,
        '@': resolve('src'),
      }

    }
    // Make whatever fine-grained changes you need
    config.module.rules[6].use[2].options = {
      additionalData: `@import "${path.resolve(__dirname, '../src/style/variables.scss')}";`
    }

    // Return the altered config
    return config;
  },
}

这个改动对storybook 6.5.14 是生效。

转载本站文章《storybook添加全局样式与sass全局变量设置》,
请注明出处:storybook添加全局样式与sass全局变量设置 - Storybook Driven Development学习笔记—组件化之后之组件管理 - 周陆军的个人网站


http://www.kler.cn/a/1047.html

相关文章:

  • 【Linux】Linux基础命令(二)
  • 【AI日记】25.01.11 Weights Biases | AI 笔记 notion
  • 最近在盘gitlab.0.先review了一下docker
  • <2025 网络安全>《网络安全政策法规-关键信息基础设施安全保护条例》
  • Android 马甲包 google市场混淆技术方案
  • 圣帕特里克 VoxEdit 大赛
  • CGAL 点云上采样
  • 关于我拒绝了腾讯测试开发岗offer这件事
  • 【Java】你真的懂封装吗?一文读懂封装-----建议收藏
  • [网络原理] 网络中的基本概念
  • 数据结构与算法——栈和队列<也不过如此>
  • 考虑充电负荷空间可调度特性的分布式电源与电动汽车充电站联合配置方法(Matlab代码实现)
  • 为什么需要在差分或者重要信号换层时在它们旁边加上地孔呢?
  • 什么是计数排序?
  • IP地址的分类
  • ASEMI代理瑞萨TW8825-LA1-CR汽车芯片
  • C++ 98/03 应该学习哪些知识4
  • 2023年中国高校计算机大赛-团队程序设计天梯赛(GPLT)上海理工大学校内选拔赛(同步赛)(H题)(线段树)
  • 国产航顺HK32F030M:定时器计数/PWM输出/输出翻转/输入捕获
  • 【操作系统复习】ch3 内存基础
  • 为什么VMware会给我多创建了两个网络呢?Windows和Linux为什么可以彼此ping的通呢
  • 【文心一言】什么是文心一言,如何获得内测和使用方法。
  • 基于python的奥运会历史数据分析【120年】
  • 「Python 基础」异步 I/O 编程