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

Vite+React+Tailwind项目SCSS自定义颜色在Storybook不生效

解决Storybook中SCSS自定义主题不生效问题

核心修复步骤

1. 同步Storybook与项目Vite配置

Storybook默认Vite配置未继承项目的SCSS/Tailwind处理逻辑,需在.storybook/main.ts中合并项目配置:

// .storybook/main.ts
import type { StorybookConfig } from '@storybook/react-vite';
import { mergeConfig } from 'vite';
import viteConfig from '../vite.config';

const config: StorybookConfig = {
  stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'],
  addons: [
    '@storybook/addon-links',
    '@storybook/addon-essentials',
    '@storybook/addon-onboarding',
    '@storybook/addon-interactions',
  ],
  framework: { name: '@storybook/react-vite', options: {} },
  docs: { autodocs: 'tag' },
  // 合并项目Vite配置,确保SCSS编译逻辑一致
  viteFinal: async (config) => mergeConfig(config, viteConfig),
};
export default config;

2. 确认Preview中SCSS导入的正确性

在.storybook/preview.ts中,确保SCSS文件路径正确,且导入顺序符合样式优先级:

// .storybook/preview.ts
import '../src/style.scss'; // 路径需对应项目根目录下的SCSS文件
import type { Preview } from '@storybook/react';

const preview: Preview = {
  parameters: {
    actions: { argTypesRegex: '^on[A-Z].*' },
    controls: {
      matchers: { color: /(background|color)$/i, date: /Date$/i },
    },
  },
};

export default preview;

3. 确保Tailwind扫描Storybook文件

在tailwind.config.js中,将stories文件加入内容扫描范围,否则自定义颜色等变量无法被Tailwind识别:

/** @type {import('tailwindcss').Config} */
export default {
  content: [
    "./index.html",
    "./src/**/*.{js,ts,jsx,tsx}",
    "./src/**/*.stories.{js,ts,jsx,tsx}" // 关键:新增该行
  ],
  theme: {
    extend: {
      colors: {
        primary: 'var(--color-primary)', // 对应SCSS中的自定义变量
        secondary: 'var(--color-secondary)',
      },
    },
  },
  plugins: [],
}

4. 验证SCSS文件的变量定义与Tailwind集成

检查style.scss中是否正确定义变量并引入Tailwind指令:

// src/style.scss
@tailwind base;
@tailwind components;
@tailwind utilities;

// 自定义全局变量
:root {
  --color-primary: #165DFF;
  --color-secondary: #FF7D00;
}

// 可选:通过Tailwind层扩展样式
@layer base {
  body {
    @apply bg-gray-50 text-gray-900;
  }
}

5. 重置缓存并重启服务

缓存可能导致样式不更新,执行以下操作:

  • 关闭Storybook和Vite服务
  • 删除.storybook/.cache和node_modules/.vite目录
  • 重新启动Storybook:npm run storybook

6. 检查依赖版本兼容性

确保核心依赖版本匹配,避免版本冲突:

  • @storybook/react-vite: ^7.0.0+
  • tailwindcss: ^3.0.0+
  • sass: ^1.60.0+
  • vite: ^4.0.0+

若版本差异过大,建议重新安装依赖:

npm install

内容的提问来源于stack exchange,提问作者nstrn_prsh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 14:33:26