13

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

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

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

4

7 回答 7

39

我将把我的解决方案加入其中,以防万一有人像我一样偶然发现这一点,并希望尽可能地坚持完全基于 ST 的工作流程。如果您使用 ST 的 SFTP 包,则可以选择监视文件以进行外部保存。

在此处输入图像描述

不幸的是,使用 ST 构建系统编译我的 SASS 不知何故被 SFTP 滑倒了。然而,SASS CLI 的 watch 实用程序可以很好地触发上传。设置后,假设目标文件保持打开状态,SFTP 将在每次构建后上传它。

回顾一下,

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

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

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

享受!

注意:您还可以通过右键单击要监视的文件并选择...从侧边栏启用文件监视

用于启用文件监控的侧边栏对话框选项

于 2014-02-04T16:23:31.170 回答
2

SFTP 有一个选项。在包控制上搜索 SFTP > 监控文件。选择后,“SFTP 监控”将出现在底部命令信息中。现在,在每次保存时,sass 和已编译的 css 都将上传到它们各自的文件夹中。

于 2015-03-06T01:04:34.783 回答
1

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

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

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

于 2014-01-31T22:48:52.503 回答
1

我最终放弃了 SFTP 并使用了 ExpanDrive。非常适合我的工作流程。

于 2014-02-01T16:43:18.510 回答
1

我仍在使用 Sublime SFTP 上传脚本文件(js/css/php 等)。通常我按快捷键上传打开的文件(Ctrl Alt U + N)。但这很烦人,尤其是频繁的试用免责声明窗口。

我在 nodejs 上编写了一个简单的工具,它监视项目文件夹并在其更改时上传任何文件。它并不完美,但让我的工作流程更加舒适:https ://github.com/liberborn/live-uploader 。

于 2015-11-12T09:20:03.147 回答
0

另请注意,您可以将文件的本地副本映射到远程副本,方法是在 Sublime 中打开本地文件夹,然后在侧栏中右键单击它,然后选择 SFTP/FTP -> Map to Remote... 进行设置建立连接,确保输入适当的 remote_path 以将文件夹映射到。

然后您可以进行构建/编译,打开本地编译文件,右键单击代码,然后在 SFTP/FTP 菜单中,选择 Monitor File 选项。

现在,当您将来再次构建时,编译后的文件仍处于打开状态,它们将在不久之后上传到服务器(以及当您切换选项卡以查看它们时在 Sublime 中刷新)。

于 2017-02-08T18:29:38.667 回答
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. 重新启动崇高。

该插件的作用如下:

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

所有这一切几乎立即发生,因此您甚至不会注意到打开了一个新选项卡。

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

于 2018-04-02T19:57:46.767 回答