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

Vue3+Vite项目引入设计系统后Tailwind CSS类不生效问题

问题描述

我用Vite创建了两个Vue 3项目:一个是设计系统,另一个是使用该设计系统的主项目,分属不同代码仓库。
主项目通过package.json添加依赖引用设计系统:

"design-system": "bitbucket:repository-url#main",

两个项目的devDependencies都包含"tailwindcss": "^3.4.1"。

组件导入正常,但TailwindCSS出现异常:

  • 从设计系统导入<Component A/>,它包含类bg-primary,该类在两个项目的配置中都存在,但一开始不生效;
  • 手动在主项目创建<div class="bg-primary"></div>后,这个div和<Component A/>中的bg-primary类都会生效。

我的配置如下:

style.css(Tailwind导入)

@tailwind base; @tailwind components; @tailwind utilities;

main.ts(样式导入)

import App from './App.vue';
import './style.css';
import { createApp } from 'vue';
import PrimeVue from 'primevue/config';
import router from "./router/index";

const app = createApp( App );
   
app.use( PrimeVue ).use( router ).mount( '#app' );

postcss.config.js

export default {
  plugins: {
    tailwindcss: {},
    autoprefixer: {},
  },
};

tailwind.config.js

/** @type {import('tailwindcss').Config} */
export default {
  darkMode: 'class',
  content: [
    "./index.html",
    "./src/**/*.{vue,js,ts,jsx,tsx}",
    "./node_modules/primevue/**/*.{vue,js,ts,jsx,tsx}"
  ],
  theme: {
    colors: {
      transparent: 'transparent!important',
      'FAFAFA': 'green!important',
      'primary': '#004E60',
      'primary-darker': "#14323F",
      'secondary': '#50CFC9',
      "001B21": '#001B21',
      'white': "#ffffff",
      'F8F9FA': "#F8F9FA",
      'E3E3E3': "#e3e3e3",
      '8292A6': '#8292A6',
      '007995': '#007995',
      'DCDCDC': '#DCDCDC',
      'E2E8F0': '#E2E8F0',
      'CACACA': '#cacaca',
      'danger': 'red'

    },
    fontFamily: {
      'sans': ['Poppins'],
      'serif': ['Poppins'],
      'mono': ['Poppins'],
      'display': ['Poppins'],
      'body': ['Poppins'],
    },
    fontSize: {
      esm: '0.7rem',
      sm: '0.9rem',
      base: '1rem',
      xl: '2.25rem',
      '2xl': '2.2rem',
      '3xl': '3.953rem',
      '4xl': '4.441rem',
      '5xl': '5.052rem',
    },
    screens: {
      'esm': '300px',
      'sm': '459px',
      'md': '768px',
      'lg': '1024px',
      'xl': '1280px',
      '2xl': '1536px',
    },
    extend: {
      width: {
        '100': '100px',
        '270': '270px',
      },
      height: {
        '50': '50px',
        '88': '88px',
      },
      inset: {
        '100': '100px',
        '270': '270px',
      },
      borderRadius: {
        'exl': '26px'
      },
      boxShadow: {
        '3xl': '0px 8px 8px 0px rgba(202, 202, 202, 0.20)',
      }
    }
  },
  plugins: [],
};
解决方案

这个问题的核心是Tailwind的JIT引擎没有扫描到设计系统组件中的类名,初始构建时不会生成对应的CSS规则;当你在主项目源码中添加bg-primary类后,Tailwind扫描到该类并生成CSS,此时设计系统组件里的同类名也会匹配生效。

解决步骤如下:

1. 修改主项目的tailwind.config.js

在content数组中添加设计系统组件的路径,让Tailwind扫描到这些文件中的类名:

content: [
  "./index.html",
  "./src/**/*.{vue,js,ts,jsx,tsx}",
  "./node_modules/primevue/**/*.{vue,js,ts,jsx,tsx}",
  // 添加设计系统组件路径,根据实际包结构调整
  "./node_modules/design-system/**/*.{vue,js,ts,jsx,tsx}"
],

如果设计系统的组件集中在src/components目录下,也可以写./node_modules/design-system/src/**/*.vue。

2. 可选:设计系统侧优化

若设计系统和主项目共用Tailwind配置,建议将Tailwind配置抽成独立包,或让设计系统依赖主项目的Tailwind配置,避免两边重复定义主题(如primary颜色),减少维护成本。

3. 重启主项目开发服务

修改配置后,重启Vite开发服务,让Tailwind重新扫描所有指定路径的文件,生成完整的CSS规则。

处理后,设计系统组件中的bg-primary类会在初始构建时就被Tailwind识别并生成对应CSS,无需手动添加同类名触发。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 00:08:11