如何实现Sublime Text结合Gulp自动编译SCSS并通过sFTP传至远程服务器?
实现Sublime Text保存SCSS后自动Gulp编译+远程服务器上传的完整流程
我来帮你梳理这个需求的实现步骤,其实分两大块:Gulp编译SCSS到CSS,以及Sublime自动触发编译+CSS文件自动上传,咱们一步一步来:
一、先装必要的工具和插件
1. 本地项目依赖(Gulp相关)
首先确保你的项目已经初始化了npm(没有的话在项目根目录跑npm init -y),然后安装编译SCSS需要的Gulp包:
npm install gulp gulp-dart-sass gulp-plumber --save-dev
gulp-dart-sass:现在官方推荐的Sass编译器,比旧的gulp-sass更稳定gulp-plumber:防止编译出错时Gulp任务直接中断,方便调试
2. Sublime Text 3插件
你已经有sFTP插件了,还需要额外装一个:
- 通过Package Control搜索安装
Gulp插件(或者用下面的自定义Build System方法,二选一即可)
二、配置Gulp编译任务
在项目根目录创建gulpfile.js,写入以下代码(记得替换成你自己的文件路径):
const gulp = require('gulp'); const sass = require('gulp-dart-sass'); const plumber = require('gulp-plumber'); // 核心编译任务:把SCSS转成CSS function compileSass() { return gulp.src('./src/scss/**/*.scss') // 你的SCSS源文件路径,比如src下的所有SCSS .pipe(plumber()) // 捕获错误不中断任务 .pipe(sass({ outputStyle: 'compressed' }).on('error', sass.logError)) // 可选expanded(格式化)或compressed(压缩) .pipe(gulp.dest('./dist/css')); // 编译后CSS的输出路径,比如dist/css } // 监听SCSS文件变化,自动触发编译 function watchSass() { gulp.watch('./src/scss/**/*.scss', compileSass); } // 导出任务,方便Sublime调用 exports.compileSass = compileSass; exports.default = watchSass;
写完后可以先手动跑gulp compileSass测试下编译是否正常,确保CSS能生成到指定目录。
三、配置Sublime Text:保存SCSS时自动触发Gulp编译
这里有两种方案,选一种就行:
方案1:用Gulp插件自动触发
- 安装好
Gulp插件后,打开你的Sublime项目 - 按下
Ctrl+Shift+P打开命令面板,输入Gulp: Enable Auto Run - 选择你要自动运行的任务——这里选
compileSass,这样每次你保存SCSS文件时,插件会自动触发这个编译任务
方案2:自定义Build System(无需额外插件)
- 打开Sublime,点击
Tools > Build System > New Build System - 粘贴以下配置(同样替换成你的项目路径逻辑,或者直接用变量):
{ "cmd": ["npx", "gulp", "compileSass"], "working_dir": "${project_path}", "selector": "source.scss", "shell": true }
- 保存为
SCSS-Gulp.sublime-build,然后在Tools > Build System里选中这个配置 - 勾选
Tools > Build System > Save on Build,这样每次保存SCSS文件时,Sublime会自动运行这个Build任务,触发Gulp编译
四、配置sFTP插件:自动上传编译后的CSS
- 右键你的项目文件夹,选择
sFTP/FTP > Setup Server,生成sftp-config.json文件 - 先把远程服务器的基础配置填对:
host(服务器地址)、user(用户名)、password(或密钥)、remote_path(远程服务器上存放CSS的路径,比如/var/www/html/css) - 在配置里添加自动上传的规则,让sFTP监听CSS文件的变化:
"upload_on_save": true, "watch": [ "./dist/css/**/*.css" // 这里填你Gulp输出CSS的路径,和gulpfile里的dest一致 ], "watch_timeout": 500 // 延迟500ms再上传,避免编译未完成就触发上传
- 保存配置后,sFTP就会自动监听CSS文件的修改,一旦Gulp编译完成更新了CSS,就会自动把文件上传到远程服务器
一些注意事项
- 如果你的电脑没全局安装Gulp,用方案2的Build System时,cmd里用
npx gulp而不是直接gulp,npx会自动调用项目本地的Gulp - 测试时可以分步骤来:先测Gulp编译是否正常,再测Sublime保存是否触发编译,最后测CSS更新是否自动上传
- 如果sFTP没触发上传,检查
watch路径是否正确,或者重启Sublime试试
内容的提问来源于stack exchange,提问作者Enpeiks




