应将 File Watcher 的 Watch patterns 改为 **/*.less;**/_*.less,以显式包含下划线开头的 Less partial 文件(如 _variables.less),解决因 @import 引入后修改不触发重编译的问题。

File Watcher 里怎么跳过 _variables.less 这类文件?
不能靠“不监听下划线文件”这种默认逻辑——File Watcher 的 Watch patterns 默认只匹配 **/*.less,压根不会触发 _variables.less 的变更,但它被 @import 引入后改了却没重编译,才是真问题。你不是要“排除”,而是要“包含”。
- 进
Settings > Tools > File Watchers,找到你的 Less watcher - 把
Watch patterns改成:**/*.less;**/_*.less(分号分隔,不是逗号) - 别信“自动跳过 partial”的说法——IDE 不知道哪个是 partial,它只认文件名模式
- 如果用了 Sass/SCSS,同理填
**/*.scss;**/_*.scss
lessc --watch 为什么还是编译了 node_modules 里的 .less?
lessc --watch 默认递归扫描所有 @import 路径下的文件,包括 node_modules。它不区分“项目源码”和“依赖”,只要路径在 @import 树里,就加进监听列表。
- 显式限定范围:
lessc --watch --include-path=./src/less ./src/less/main.less - 加
--disable-dotfiles防止监听.gitignore同级的备份.less文件 - 别用
lessc --watch src/**/*.less—— glob 模式会让它把node_modules也扫进去 - 如果必须保留第三方样式(如 Bootstrap),改用
@import (reference)引入,它不输出 CSS,也不会触发 watch 重编译
Webpack 中 less-loader 怎么忽略某些 .less 文件?
Webpack 本身没有“排除某个 .less 文件”的开关,但你可以通过 test + exclude 控制哪些文件进 less-loader 流程。
- 在
webpack.config.js的module.rules里,给 less 规则加exclude: -
exclude: /node_modules\/bootstrap\/.*\.less$/(正则精确匹配) - 或更通用:
exclude: /node_modules/,再单独配一条 loader 处理你需要的第三方样式 - 注意:exclude 是对文件路径生效,不是对 @import 内容生效——
@import "node_modules/foo.less"如果已进入 webpack 模块图,exclude 就无效了
VSCode tasks.json 里如何跳过特定路径?
VSCode 的 tasks.json 本身不提供“排除路径”功能,但你可以用 args 把监控范围收窄,本质和 lessc --watch 一致。
立即学习“前端免费学习笔记(深入)”;
- 不要写
"args": ["--watch", "src/**/*.less"] - 改成明确入口:
"args": ["--watch", "--include-path=src/less", "src/less/main.less"] - 如果项目有多个主题文件(
theme-dark.less,theme-light.less),别让它们都进 watch,只监听主入口,其余通过@import管理 - 检查
presentation下的echo是否设为true,否则终端不输出lessc的监听日志,你根本不知道它到底监听了哪些路径
node_modules 必须跳过,_variables.less 必须包含,public/style.css 类似文件压根不该进 Less 编译流程。路径规则一旦写错,watch 就会静默失效,连报错都没有。


















