From e61581eef2a424881b404497ad9fc6b1260e5970 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sun, 14 Jun 2026 01:23:54 +0800 Subject: [PATCH] =?UTF-8?q?fix(vite):=20=E4=BD=BF=E7=94=A8=E7=9B=B8?= =?UTF-8?q?=E5=AF=B9=E8=B7=AF=E5=BE=84=E6=B3=A8=E5=85=A5=20SCSS=20?= =?UTF-8?q?=E5=8F=98=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 对应知识星球问题:https://wx.zsxq.com/group/88858522214142/topic/82255281581554842 将 variables.scss 的注入路径从项目绝对路径改为相对当前 SCSS 文件的路径,避免 Windows 中文目录下 Sass 解析 @use 失败。 --- vite.config.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/vite.config.ts b/vite.config.ts index a61ea7999..1379f2fcd 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,4 +1,4 @@ -import {resolve} from 'path' +import {dirname, relative, resolve} from 'path' import type {ConfigEnv, UserConfig} from 'vite' import {loadEnv, normalizePath} from 'vite' import {createVitePlugins} from './build/vite' @@ -11,6 +11,12 @@ function pathResolve(dir: string) { return resolve(root, '.', dir) } +function getRelativeScssUsePath(filename: string, targetPath: string) { + const cleanFilename = filename.split('?')[0] + const relativePath = normalizePath(relative(dirname(cleanFilename), targetPath)) + return relativePath.startsWith('.') ? relativePath : `./${relativePath}` +} + // https://vitejs.dev/config/ export default ({command, mode}: ConfigEnv): UserConfig => { let env = {} as any @@ -20,7 +26,7 @@ export default ({command, mode}: ConfigEnv): UserConfig => { } else { env = loadEnv(mode, root) } - const variablesScssPath = normalizePath(pathResolve('src/styles/variables.scss')) + const variablesScssPath = pathResolve('src/styles/variables.scss') return { base: env.VITE_BASE_PATH, root: root, @@ -58,7 +64,7 @@ export default ({command, mode}: ConfigEnv): UserConfig => { ) { return source } - return `@use "${variablesScssPath}" as *;\n${source}` + return `@use "${getRelativeScssUsePath(filename, variablesScssPath)}" as *;\n${source}` }, api: 'modern-compiler' }