我正在Sublime中开发html / css。我正在用sass编写我的CSS并使用Sublime的构建系统来生成文件保存的css文件。它还配置为使用SFTP插件在保存时上传。
我的问题是生成的css文件没有上传,因为那不是我直接保存的文件。我试图看看SFTP插件是否有办法上传本地修改过的所有文件,但它似乎不支持。
我能做些什么来实现这个目标吗?
答案 0 :(得分:37)
我会把我的解决方案投入到混合中,以防万一有人在我这样做时偶然发现并希望尽可能地接近基于ST的工作流程。如果您正在使用ST的SFTP程序包,则可以选择监视外部保存的文件。
不幸的是,使用ST构建系统编译我的SASS以某种方式由SFTP滑落。但是,SASS CLI的监视实用程序会触发上传。一旦设置,假设目标文件保持打开状态,SFTP将在每次构建后上传它。
回顾一下,
打开目标文件,然后是命令面板。输入SFTP: Monitor File (Upload on External Save)
启动您喜欢的任何CLI监视/构建实用程序,对我来说,Sass:sass --watch app.scss:app.css
保持目标文件打开,否则SFTP监视器似乎停止。
享受!
注意:您也可以通过右键单击要监控的文件并选择...来从侧栏启用文件监控。
答案 1 :(得分:2)
SFTP有一个选项。搜索SFTP的包控制>监控文件。选择后,“SFTP监控”将显示在底部命令信息中。现在每次保存时,sass和complied css都将上传到他们的重复文件夹。
答案 2 :(得分:1)
因为Sublime SFTP似乎不支持这一点,所以你可能不得不走另一条路。
我建议使用监控css文件夹的内容,并自动将任何更改上传到您的服务器。使用好的时尚WinSCP(如果你在Windows上)可以工作,但任何同步文件夹的方式都可以。
答案 3 :(得分:1)
我最终废弃SFTP并使用ExpanDrive。完美地适应我的工作流程。
答案 4 :(得分:1)
我还在使用Sublime SFTP上传脚本文件(js / css / php等)。通常我按快捷键上传打开的文件(Ctrl Alt U + N)。但这很烦人,特别是经常试用免责声明窗口。
我在nodejs上编写了一个简单的工具,它监视项目文件夹并在其更改时上传任何文件。它并不完美,但让我的工作流程更加舒适:https://github.com/liberborn/live-uploader。
答案 5 :(得分:0)
另请注意,您可以将文件的本地副本映射到远程副本,方法是在Sublime中打开本地文件夹,然后在侧栏中右键单击它,然后选择SFTP / FTP - >映射到远程...设置连接,确保输入相应的remote_path以将文件夹映射到。
然后你可以进行构建/编译,打开本地编译文件,右键单击代码,然后在SFTP / FTP菜单中选择Monitor File选项。
现在,当您将来再次构建时,编译后的文件仍然打开,不久之后它们将被上传到服务器(以及当您切换选项卡以查看它们时在Sublime中刷新)。
答案 6 :(得分:0)
如果在保存文件时编译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
。重启Sublime。
该插件的作用如下:
SFTP: Upload File
命令,关闭编译后的文件。这一切几乎立即发生,因此您甚至不会注意到新标签页已打开。
代码可以改进,但它可以解决问题。