Sublime SFTP - 保存sass文件时上传已编译的css

时间:2014-01-31 22:09:10

标签: css sass sftp sublimetext build-system

我正在Sublime中开发html / css。我正在用sass编写我的CSS并使用Sublime的构建系统来生成文件保存的css文件。它还配置为使用SFTP插件在保存时上传。

我的问题是生成的css文件没有上传,因为那不是我直接保存的文件。我试图看看SFTP插件是否有办法上传本地修改过的所有文件,但它似乎不支持。

我能做些什么来实现这个目标吗?

7 个答案:

答案 0 :(得分:37)

我会把我的解决方案投入到混合中,以防万一有人在我这样做时偶然发现并希望尽可能地接近基于ST的工作流程。如果您正在使用ST的SFTP程序包,则可以选择监视外部保存的文件。

enter image description here

不幸的是,使用ST构建系统编译我的SASS以某种方式由SFTP滑落。但是,SASS CLI的监视实用程序会触发上传。一旦设置,假设目标文件保持打开状态,SFTP将在每次构建后上传它。

回顾一下,

  1. 打开目标文件,然后是命令面板。输入SFTP: Monitor File (Upload on External Save)

  2. 启动您喜欢的任何CLI监视/构建实用程序,对我来说,Sass:sass --watch app.scss:app.css

  3. 保持目标文件打开,否则S​​FTP监视器似乎停止。

  4. 享受!

    注意:您也可以通过右键单击要监控的文件并选择...来从侧栏启用文件监控。

    Sidebar Dialog Option for enabling File Monitoring

答案 1 :(得分:2)

SFTP有一个选项。搜索SFTP的包控制>监控文件。选择后,“SFTP监控”将显示在底部命令信息中。现在每次保存时,sass和complied css都将上传到他们的重复文件夹。

答案 2 :(得分:1)

因为Sublime SFTP似乎不支持这一点,所以你可能不得不走另一条路。

我建议使用监控css文件夹的内容,并自动将任何更改上传到您的服务器。使用好的时尚WinSCP(如果你在Windows上)可以工作,但任何同步文件夹的方式都可以。

http://winscp.net/eng/docs/task_keep_up_to_date

答案 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。

该插件的作用如下:

  • 检查您是否正在编辑CoffeeScript,Sass或Less文件;
  • 如果存在编译文件,则在Sublime
  • 中打开编译文件 执行
  • SFTP: Upload File命令,关闭编译后的文件。

这一切几乎立即发生,因此您甚至不会注意到新标签页已打开。

代码可以改进,但它可以解决问题。