在LazyVim的Vue项目中配置LSP识别Scoped SCSS里的TailwindCSS @apply指令
解决LazyVim中Vue组件Scoped SCSS里Tailwind @apply指令的LSP报错问题
问题原因
这个报错是因为负责CSS/SCSS校验的LSP(比如vtsls或volar)未识别Tailwind的@apply规则,单纯设置全局的css.lint.unknownAtRules = "ignore"无效,大概率是该配置没正确作用到对应的LSP实例,或者Tailwind CSS LSP没正确接管Vue组件内的样式块校验。
可行解决方案
1. 让Tailwind CSS LSP优先处理Vue样式块
在LazyVim的LSP配置文件(比如lua/plugins/lsp.lua)中,调整tailwindcss的配置,确保它能关联Vue文件并处理SCSS样式块:
return { "neovim/nvim-lspconfig", opts = { servers = { tailwindcss = { filetypes = { "vue", "scss", "css", "sass" }, settings = { tailwindCSS = { includeLanguages = { vue = "scss", }, }, }, }, }, }, }
2. 给volar/vtsls单独配置忽略规则
如果是volar或vtsls触发的报错,需要直接在它们的LSP设置里配置unknownAtRules,而不是全局设置:
return { "neovim/nvim-lspconfig", opts = { servers = { volar = { settings = { css = { lint = { unknownAtRules = "ignore", }, }, scss = { lint = { unknownAtRules = "ignore", }, }, }, }, vtsls = { settings = { css = { lint = { unknownAtRules = "ignore", }, }, scss = { lint = { unknownAtRules = "ignore", }, }, }, }, }, }, }
3. 禁用其他LSP对样式的校验(可选)
如果上面的方法没用,可以让tailwindcss LSP单独处理样式校验,关闭volar/vtsls的CSS/SCSS校验能力:
return { "neovim/nvim-lspconfig", opts = { servers = { volar = { settings = { css = { validate = false }, scss = { validate = false }, }, }, }, }, }
4. 检查项目Tailwind配置文件
确保项目根目录的tailwind.config.js(或.ts)配置正确,包含Vue组件的路径:
/** @type {import('tailwindcss').Config} */ module.exports = { content: [ "./index.html", "./src/**/*.{vue,js,ts,jsx,tsx}", ], theme: { extend: {}, }, plugins: [], }
验证配置
修改配置后重启Neovim,打开目标Vue组件,运行:Lspinfo确认tailwindcss LSP已激活并关联当前缓冲区,再检查@apply指令的报错是否消失。
内容的提问来源于stack exchange,提问作者studio-pj
相关产品推荐
相关产品推荐

