ignore_regexes匹配的是服务器remote_path下的相对路径而非本地路径,如remote_path为/var/www/html/myapp时,"node_modules/"匹配的是该路径下的子目录;常见错误包括误加前导/、使用反斜杠、缺末尾斜杠等。

忽略规则不生效,八成是正则写错了或路径理解有偏差——ignore_regexes 里写的不是本地路径,而是服务器上 remote_path 下的相对路径。
ignore_regexes 的匹配逻辑:从 remote_path 开始算起
很多人误以为 ignore_regexes 是按本地文件路径匹配,实际它作用于上传后在服务器上的路径。比如你配置了 "remote_path": "/var/www/html/myapp",那么 "ignore_regexes": ["node_modules/"] 真正匹配的是服务器上的 /var/www/html/myapp/node_modules/,而不是你本地的 ./node_modules/。
常见错误包括:
- 写成
"./node_modules/"或"node_modules"(缺结尾斜杠,可能漏掉子文件) - 用反斜杠
(Windows 风格),但 JSON 要求双反斜杠转义,且 SFTP 插件只认正斜杠/) - 忽略项带前导
/,如"/node_modules/"—— 这会强制从根目录匹配,通常不命中
正确写法示例:"ignore_regexes": ["node_modules/", "\.git/", "dist/.*", ".*\.log$"]
常见忽略需求与对应正则写法
以下写法经实测在 SFTP 插件(v3.14+)中稳定生效:
- 忽略整个目录:
"node_modules/"(注意末尾斜杠,否则只忽略同名文件) - 忽略所有 .log 文件:
".*\.log$"(.要转义,$锚定行尾) - 忽略隐藏文件和文件夹:
"^\..*"(^表示开头,\.匹配点号) - 忽略 build 输出目录及其全部内容:
"build/"或"dist/" - 忽略特定配置文件:
(点号和 $ 都需转义)
注意:ignore_regexes 是数组,每项独立匹配;不支持 glob 语法(如 <code>**/*.tmp),只支持 PCRE 风格正则。
FTPSync 和 SFTP 插件的忽略字段名不同
别混用配置格式——这是上传失败的高频原因:
- SFTP 插件(推荐)用
ignore_regexes(复数 + 下划线 + 正则强调) - FTPSync 插件用
ignore(单数,接受 glob 和简单字符串,不支持正则) - FTPSync 的
ignore示例:"ignore": ["*.log", "temp/*", "cache/"]
如果你装了两个插件但只配了一个,另一个可能静默忽略或报错。检查当前项目用的是哪个插件:看根目录是 sftp-config.json 还是 ftpsync.json(或 ftpsync.settings)。
调试忽略是否生效的最快方法
别靠猜,直接看日志:
- 打开 Sublime 控制台:
Ctrl+`(反引号) - 手动执行一次上传:
Ctrl+Alt+U或右键 →SFTP: Upload File - 观察控制台输出中是否有类似
Ignored: node_modules/utils.js的提示 - 如果没有,说明规则没匹配上;如果出现但文件仍被上传,说明插件根本没读到该配置(检查文件名、位置、JSON 格式)
特别注意:SFTP 插件要求配置文件必须叫 sftp-config.json,且必须放在你通过 Project → Add Folder to Project 打开的那个文件夹根目录下——放错一层就失效。











