From 5e395ccae408e1bc080228e8a40e3524e898a47a Mon Sep 17 00:00:00 2001 From: tobegold574 <2386340403@qq.com> Date: Mon, 17 Nov 2025 13:37:35 +0800 Subject: [PATCH] =?UTF-8?q?fix(CSS):=20=E4=BF=AE=E5=A4=8DUI=E7=BB=84?= =?UTF-8?q?=E4=BB=B6CSS=E7=B1=BB=E4=B8=BA=E7=A9=BA=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 库模式默认JS与CSS独立,引入插件合并 - 修改variables文件名为_variables - 删除所有scoped,更遵循库开发规范 BREAKING CHANGES: 2.0.0->2.1.0 --- README.md | 6 ++++++ package.json | 3 ++- pnpm-lock.yaml | 12 +++++++++++ src/components/Avatar/index.vue | 2 +- src/components/Button/index.vue | 2 +- src/components/ChatBubble/index.vue | 2 +- src/components/Container/index.vue | 2 +- src/components/Divider/index.vue | 2 +- src/components/Empty/index.vue | 2 +- src/components/Grid/index.vue | 2 +- src/components/Icon/index.vue | 2 +- src/components/Image/index.vue | 2 +- src/components/Loading/index.vue | 2 +- src/components/Message/index.vue | 2 +- src/components/Notification/index.vue | 2 +- src/components/Result/index.vue | 2 +- src/components/Space/index.vue | 2 +- src/components/Tag/index.vue | 2 +- src/components/Text/index.vue | 2 +- src/index.ts | 21 +++++++++++++++++++ .../{variables.scss => _variables.scss} | 0 src/styles/index.scss | 4 ++-- vite.config.ts | 14 ++++++------- 23 files changed, 66 insertions(+), 26 deletions(-) rename src/styles/{variables.scss => _variables.scss} (100%) diff --git a/README.md b/README.md index 9642cea..9d5a2de 100644 --- a/README.md +++ b/README.md @@ -93,4 +93,10 @@ knowai-ui/ - 修复打包产物被覆盖问题 - 支持tree-shaking,不暴露内部路径 +### 2025-11-17 +- 删除全部组件vue实现style部分的scoped属性 +- 加入"vite-plugin-css-injected-by-js"插件,解决库模式下CSS文件独立打包无法注入的问题 +- 在vite入口引入所有scss文件,打包入es.js编译结果入口 +- JS仍保持tree-shaking优化,但css文件不再独立打包,而是与JS文件合并 + diff --git a/package.json b/package.json index 82befc3..f31cd6f 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,8 @@ "@typescript-eslint/eslint-plugin": "^8.46.4", "@typescript-eslint/parser": "^8.46.4", "@vue/eslint-config-typescript": "^14.1.0", - "eslint-plugin-vue": "^9.33.0" + "eslint-plugin-vue": "^9.33.0", + "vite-plugin-css-injected-by-js": "^3.0.0" }, "peerDependencies": { "vue": "^3.5.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bc96473..ec00663 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -53,6 +53,9 @@ importers: vite: specifier: ^4.5.0 version: 4.5.14(@types/node@20.19.25)(sass@1.94.0) + vite-plugin-css-injected-by-js: + specifier: ^3.0.0 + version: 3.5.2(vite@4.5.14(@types/node@20.19.25)(sass@1.94.0)) vitest: specifier: ^0.34.6 version: 0.34.6(jsdom@22.1.0)(sass@1.94.0) @@ -1575,6 +1578,11 @@ packages: engines: {node: '>=v14.18.0'} hasBin: true + vite-plugin-css-injected-by-js@3.5.2: + resolution: {integrity: sha512-2MpU/Y+SCZyWUB6ua3HbJCrgnF0KACAsmzOQt1UvRVJCGF6S8xdA3ZUhWcWdM9ivG4I5az8PnQmwwrkC2CAQrQ==} + peerDependencies: + vite: '>2.0.0-0' + vite@4.5.14: resolution: {integrity: sha512-+v57oAaoYNnO3hIu5Z/tJRZjq5aHM2zDve9YZ8HngVHbhk66RStobhb1sqPMIPEleV6cNKYK4eGrAbE9Ulbl2g==} engines: {node: ^14.18.0 || >=16.0.0} @@ -3300,6 +3308,10 @@ snapshots: - supports-color - terser + vite-plugin-css-injected-by-js@3.5.2(vite@4.5.14(@types/node@20.19.25)(sass@1.94.0)): + dependencies: + vite: 4.5.14(@types/node@20.19.25)(sass@1.94.0) + vite@4.5.14(@types/node@20.19.25)(sass@1.94.0): dependencies: esbuild: 0.18.20 diff --git a/src/components/Avatar/index.vue b/src/components/Avatar/index.vue index 0c6c045..7e9bef1 100644 --- a/src/components/Avatar/index.vue +++ b/src/components/Avatar/index.vue @@ -116,6 +116,6 @@ export default defineComponent({ }); - diff --git a/src/components/Button/index.vue b/src/components/Button/index.vue index 8f8d788..ed03f24 100644 --- a/src/components/Button/index.vue +++ b/src/components/Button/index.vue @@ -109,6 +109,6 @@ export default defineComponent({ }); - diff --git a/src/components/ChatBubble/index.vue b/src/components/ChatBubble/index.vue index 0c1c55e..8ee8f8a 100644 --- a/src/components/ChatBubble/index.vue +++ b/src/components/ChatBubble/index.vue @@ -198,6 +198,6 @@ export default defineComponent({ }); - diff --git a/src/components/Container/index.vue b/src/components/Container/index.vue index 06c58e5..6887e4f 100644 --- a/src/components/Container/index.vue +++ b/src/components/Container/index.vue @@ -130,6 +130,6 @@ export default defineComponent({ }); - diff --git a/src/components/Divider/index.vue b/src/components/Divider/index.vue index 6adae00..e4f0250 100644 --- a/src/components/Divider/index.vue +++ b/src/components/Divider/index.vue @@ -98,6 +98,6 @@ export default defineComponent({ }); - diff --git a/src/components/Empty/index.vue b/src/components/Empty/index.vue index 23e896d..a977700 100644 --- a/src/components/Empty/index.vue +++ b/src/components/Empty/index.vue @@ -74,6 +74,6 @@ export default defineComponent({ }); - diff --git a/src/components/Grid/index.vue b/src/components/Grid/index.vue index 8925620..a905e77 100644 --- a/src/components/Grid/index.vue +++ b/src/components/Grid/index.vue @@ -129,6 +129,6 @@ export default defineComponent({ }); - diff --git a/src/components/Icon/index.vue b/src/components/Icon/index.vue index 028e501..396bcff 100644 --- a/src/components/Icon/index.vue +++ b/src/components/Icon/index.vue @@ -181,6 +181,6 @@ export default defineComponent({ }); - diff --git a/src/components/Image/index.vue b/src/components/Image/index.vue index 4f5360e..95243b0 100644 --- a/src/components/Image/index.vue +++ b/src/components/Image/index.vue @@ -200,6 +200,6 @@ export default defineComponent({ }); - diff --git a/src/components/Loading/index.vue b/src/components/Loading/index.vue index cb12edc..62f68ce 100644 --- a/src/components/Loading/index.vue +++ b/src/components/Loading/index.vue @@ -108,6 +108,6 @@ export default defineComponent({ }); - diff --git a/src/components/Message/index.vue b/src/components/Message/index.vue index cbded1f..5ecd404 100644 --- a/src/components/Message/index.vue +++ b/src/components/Message/index.vue @@ -189,6 +189,6 @@ export default defineComponent({ }); - diff --git a/src/components/Notification/index.vue b/src/components/Notification/index.vue index d5bffe0..7530997 100644 --- a/src/components/Notification/index.vue +++ b/src/components/Notification/index.vue @@ -225,6 +225,6 @@ export default defineComponent({ }); - diff --git a/src/components/Result/index.vue b/src/components/Result/index.vue index a4b7777..66fb879 100644 --- a/src/components/Result/index.vue +++ b/src/components/Result/index.vue @@ -125,6 +125,6 @@ export default defineComponent({ }); - diff --git a/src/components/Space/index.vue b/src/components/Space/index.vue index a327bee..df6a750 100644 --- a/src/components/Space/index.vue +++ b/src/components/Space/index.vue @@ -90,6 +90,6 @@ export default defineComponent({ }); - diff --git a/src/components/Tag/index.vue b/src/components/Tag/index.vue index 99c6464..ddd9850 100644 --- a/src/components/Tag/index.vue +++ b/src/components/Tag/index.vue @@ -118,6 +118,6 @@ export default defineComponent({ }); - diff --git a/src/components/Text/index.vue b/src/components/Text/index.vue index f5641de..0c9db27 100644 --- a/src/components/Text/index.vue +++ b/src/components/Text/index.vue @@ -116,6 +116,6 @@ export default defineComponent({ }); - diff --git a/src/index.ts b/src/index.ts index 467122f..25ccb1c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,6 +1,27 @@ import type { App } from 'vue'; import * as Components from './components/index'; +// 引入所有scss +import './styles/index.scss'; +import './components/Avatar/index.scss' +import './components/Tag/index.scss' +import './components/Image/index.scss' +import './components/ChatBubble/index.scss' +import './components/Message/index.scss' +import './components/Notification/index.scss' +import './components/Loading/index.scss' +import './components/Result/index.scss' +import './components/Empty/index.scss' +import './components/Divider/index.scss' +import './components/Button/index.scss' +import './components/Container/index.scss' +import './components/Grid/index.scss' +import './components/Space/index.scss' +import './components/Text/index.scss' +import './components/Icon/index.scss' + + + // 组件列表 const components = [ // 基础视觉系统组件(保留) diff --git a/src/styles/variables.scss b/src/styles/_variables.scss similarity index 100% rename from src/styles/variables.scss rename to src/styles/_variables.scss diff --git a/src/styles/index.scss b/src/styles/index.scss index 980b7d1..1dfb339 100644 --- a/src/styles/index.scss +++ b/src/styles/index.scss @@ -1,8 +1,8 @@ // KnowAI UI组件库基础样式 // 引入SCSS变量系统 -@forward './variables.scss'; -@use './variables.scss' as *; +@forward './_variables.scss'; +@use './_variables.scss' as *; // 重置样式 *, diff --git a/vite.config.ts b/vite.config.ts index 96fa794..d00354d 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,11 +1,13 @@ import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' +import cssInjectedByJsPlugin from 'vite-plugin-css-injected-by-js' import { fileURLToPath, URL } from 'node:url' export default defineConfig({ - // 插件数组 - plugins: [vue()], - // 路径别名 + plugins: [ + vue(), + cssInjectedByJsPlugin() + ], resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url)), @@ -13,17 +15,15 @@ export default defineConfig({ } }, build: { - // 构建为库模式 lib: { entry: fileURLToPath(new URL('./src/index.ts', import.meta.url)), name: 'knowaiUi', fileName: (format) => `knowai-ui.${format}.js` }, - // 输出目录 outDir: 'dist/client', emptyOutDir: false, + cssCodeSplit: false, // 插件模式下可以关闭拆分 rollupOptions: { - // 不打包进库 external: ['vue'], output: { globals: { @@ -32,4 +32,4 @@ export default defineConfig({ } } } -}) \ No newline at end of file +})