我正在 Sublime 中开发 html/css。我正在用sass编写我的 css,并使用 Sublime 的构建系统在文件保存时生成 css 文件。它还配置为使用SFTP插件在保存时上传。
我的问题是生成的css文件没有上传,因为那不是我直接保存的文件。我试图查看 SFTP 插件是否有办法上传所有已在本地修改的文件,但它似乎不支持。
我能做些什么来实现这一目标吗?
我将把我的解决方案加入其中,以防万一有人像我一样偶然发现这一点,并希望尽可能地坚持完全基于 ST 的工作流程。如果您使用 ST 的 SFTP 包,则可以选择监视文件以进行外部保存。
不幸的是,使用 ST 构建系统编译我的 SASS 不知何故被 SFTP 滑倒了。然而,SASS CLI 的 watch 实用程序可以很好地触发上传。设置后,假设目标文件保持打开状态,SFTP 将在每次构建后上传它。
回顾一下,
打开目标文件,然后是命令面板。进入SFTP: Monitor File (Upload on External Save)
启动你喜欢的任何 CLI watch/build 实用程序,对我来说,Sass:sass --watch app.scss:app.css
保持目标文件打开,否则 SFTP 监视器似乎停止。
享受!
注意:您还可以通过右键单击要监视的文件并选择...从侧边栏启用文件监视
SFTP 有一个选项。在包控制上搜索 SFTP > 监控文件。选择后,“SFTP 监控”将出现在底部命令信息中。现在,在每次保存时,sass 和已编译的 css 都将上传到它们各自的文件夹中。
因为 Sublime SFTP 似乎不支持这一点,你可能不得不走另一条路。
我建议使用监视您的 css 文件夹并自动将任何更改上传到您的服务器的东西。使用良好的时尚 WinSCP(如果您在 Windows 上)会起作用,但任何同步文件夹的方式都可以。
我最终放弃了 SFTP 并使用了 ExpanDrive。非常适合我的工作流程。
我仍在使用 Sublime SFTP 上传脚本文件(js/css/php 等)。通常我按快捷键上传打开的文件(Ctrl Alt U + N)。但这很烦人,尤其是频繁的试用免责声明窗口。
我在 nodejs 上编写了一个简单的工具,它监视项目文件夹并在其更改时上传任何文件。它并不完美,但让我的工作流程更加舒适:https ://github.com/liberborn/live-uploader 。
另请注意,您可以将文件的本地副本映射到远程副本,方法是在 Sublime 中打开本地文件夹,然后在侧栏中右键单击它,然后选择 SFTP/FTP -> Map to Remote... 进行设置建立连接,确保输入适当的 remote_path 以将文件夹映射到。
然后您可以进行构建/编译,打开本地编译文件,右键单击代码,然后在 SFTP/FTP 菜单中,选择 Monitor File 选项。
现在,当您将来再次构建时,编译后的文件仍处于打开状态,它们将在不久之后上传到服务器(以及当您切换选项卡以查看它们时在 Sublime 中刷新)。
如果在保存文件时编译了 CoffeeScript/Sass/Less 文件,则有一种方法可以强制 Sublime SFTP 插件上传编译后的文件。
转到 Sublime Menu → Tools → Developer → New Plugin...
,然后复制粘贴以下代码:
import sublime, sublime_plugin, re, os
class SftpAutoUpload(sublime_plugin.EventListener):
def is_remote_file(self, file_name):
while file_name != os.path.abspath(os.sep):
file_name = os.path.dirname(file_name)
sftp_config = file_name + '/sftp-config.json'
if os.path.exists(sftp_config):
return True
return False
def on_post_save_async(self, view):
window = view.window()
file_name = view.file_name()
# Upload compiled files to SFTP when saving a file (Coffee, Sass, Less)
if self.is_remote_file(file_name):
extensions = { 'coffee': 'js', 'less': 'css', 'sass': 'css' }
for extension, compiled in extensions.items():
matches = re.match('^(.*)\.'+extension+'$', file_name)
if matches is not None:
compiled_file = matches.group(1) + '.' + compiled
if os.path.exists(compiled_file):
new_view = window.open_file(compiled_file)
window.run_command("sftp_upload_file")
new_view.close()
将文件另存为sftp-auto-upload.py
. 重新启动崇高。
该插件的作用如下:
SFTP: Upload File
命令被执行,编译后的文件被关闭。所有这一切几乎立即发生,因此您甚至不会注意到打开了一个新选项卡。
代码可以改进,但它可以解决问题。