From 9089dfc4770fe48c1fb08924821eb4a74362ea0e Mon Sep 17 00:00:00 2001 From: hechang27-sprt Date: Sat, 27 Dec 2025 00:27:16 +0800 Subject: [PATCH] feat: inject CSS into JS bundle to auto-load component styles --- package-lock.json | 13 ++++++++++++- package.json | 1 + vite.config.ts | 3 +++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index 9b49748..55d9775 100644 --- a/package-lock.json +++ b/package-lock.json @@ -36,6 +36,7 @@ "terser": "^5.44.1", "typescript": "~5.9.3", "vite": "^7.3.0", + "vite-plugin-css-injected-by-js": "^3.5.2", "vite-plugin-dts": "^4.5.4" } }, @@ -8930,7 +8931,6 @@ "version": "4.0.3", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -10012,6 +10012,7 @@ "version": "4.54.0", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/estree": "1.0.8" }, @@ -11332,6 +11333,16 @@ } } }, + "node_modules/vite-plugin-css-injected-by-js": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/vite-plugin-css-injected-by-js/-/vite-plugin-css-injected-by-js-3.5.2.tgz", + "integrity": "sha512-2MpU/Y+SCZyWUB6ua3HbJCrgnF0KACAsmzOQt1UvRVJCGF6S8xdA3ZUhWcWdM9ivG4I5az8PnQmwwrkC2CAQrQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "vite": ">2.0.0-0" + } + }, "node_modules/vite-plugin-dts": { "version": "4.5.4", "dev": true, diff --git a/package.json b/package.json index 19b0495..b6f7456 100644 --- a/package.json +++ b/package.json @@ -113,6 +113,7 @@ "terser": "^5.44.1", "typescript": "~5.9.3", "vite": "^7.3.0", + "vite-plugin-css-injected-by-js": "^3.5.2", "vite-plugin-dts": "^4.5.4" }, "eslintConfig": { diff --git a/vite.config.ts b/vite.config.ts index a695920..8f1fc44 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -2,6 +2,7 @@ import { defineConfig } from "vite"; import vue from "@vitejs/plugin-vue"; import legacy from "@vitejs/plugin-legacy"; import dts from "vite-plugin-dts"; +import cssInjectedByJsPlugin from "vite-plugin-css-injected-by-js"; import { resolve } from "path"; export default defineConfig(({ command, mode }) => { @@ -14,6 +15,8 @@ export default defineConfig(({ command, mode }) => { }, plugins: [ vue(), + // Inject CSS into JS for library builds + isLibBuild && cssInjectedByJsPlugin(), // Only use legacy plugin for app builds, not library builds !isLibBuild && legacy({