Windows10下如何实现保存SASS文件时Lando自动编译为CSS?
Windows 10/WSL2下Lando+Gulp自动编译SASS失效的解决方案
问题概述
- 在Windows 10设备上用Lando搭建WordPress站点,Mac同事修改SASS文件后,Lando借助Gulp能自动编译为CSS,但Windows直接运行Lando或通过WSL2运行Ubuntu时均无法触发自动编译
- 仅能通过执行
lando dev手动编译CSS,但耗时长达数分钟 - 已尝试两种运行环境,问题均未解决,webpack监听终端界面显示监听已启动但无编译触发日志
可能的解决步骤
1. 修复文件系统监听兼容性
Windows/WSL2的文件系统通知机制和Mac存在差异,默认监听逻辑可能无法识别文件变更:
- 若使用WSL2,务必将代码目录放在WSL2内部文件系统(如
/home/your-user/路径下),不要放在Windows挂载的/mnt/c/等目录——这类跨系统挂载目录的文件变更通知无法被WSL2内的进程正确捕获 - 若直接在Windows运行Lando,给Gulp的
watch任务或webpack的监听配置添加轮询参数,强制检测文件变更:// Gulp示例配置 gulp.watch('src/scss/**/*.scss', { usePolling: true }, function(cb) { // 你的编译任务逻辑 cb(); }); // Webpack示例配置 module.exports = { watchOptions: { poll: 1000, // 每秒轮询一次文件状态 ignored: /node_modules/ } };
2. 验证Lando容器内的文件同步
- 执行
lando ssh进入容器,修改本地SASS文件后,检查容器内对应文件是否同步更新。若未同步,调整lando.yml的volumes配置:services: appserver: volumes: - ./:/app:cached # Windows环境推荐使用cached模式提升同步效率 - 若用WSL2,确保Lando是在WSL2环境内安装运行的,不要混用Windows端的Lando程序,避免跨环境文件同步断层
3. 统一依赖版本
Mac和Windows下的依赖包版本差异可能导致监听逻辑失效:
- 删除本地
node_modules、package-lock.json/yarn.lock文件,执行lando npm install在容器内重新安装依赖,确保依赖版本和Mac端一致 - 确认Gulp版本为4.x,且
gulp-cli已在容器内全局安装
4. 排查权限问题
Windows/WSL2下的文件权限可能导致容器内进程无法读取文件变更:
- 在WSL2环境内,执行
chmod -R 755 ./src/scss给SASS目录赋予合适的读写权限 - 直接在Windows运行Lando时,确保当前用户对项目目录有完全读写权限,临时关闭杀毒软件或防火墙,避免其拦截文件访问
5. 测试极简监听任务
简化配置排除干扰,验证基础监听功能是否正常:
- 创建极简Gulp任务,仅监听单个SASS文件并编译:
const gulp = require('gulp'); const sass = require('gulp-sass')(require('sass')); gulp.task('sass', function() { return gulp.src('src/scss/style.scss') .pipe(sass()) .pipe(gulp.dest('dist/css')); }); gulp.task('watch', function() { gulp.watch('src/scss/style.scss', { usePolling: true }, gulp.series('sass')); }); - 执行
lando gulp watch,修改SASS文件后查看终端是否出现编译日志
内容的提问来源于stack exchange,提问作者Christopher Harlow
相关产品推荐
相关产品推荐

