【问题标题】:Sublime SFTP - Upload compiled css when sass file savedSublime SFTP - 保存 sass 文件时上传编译的 css
【发布时间】:2014-02-24 19:02:34
【问题描述】:

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

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

有什么我可以做的吗?

【问题讨论】:

  • 这是一个相当老的问题 - 但我也有一段时间苦苦挣扎 - 我发现必须手动打开每个我想监控上传的文件真的很烦人,所以我写了这个做我需要的工具。 npmjs.com/package/upload-changes
  • 我最终找到了名为“SublimeOnSaveBuild”的安装包……就像做梦一样!可以使用 Sublime 中的 Package Control 进行安装。 github.com/alexnj/SublimeOnSaveBuild
  • 不是一回事,Barry - 这只是在您保存时构建 CSS,它不会向服务器上传任何内容。

标签: css sass sftp sublimetext build-system


【解决方案1】:

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

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

回顾一下,

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

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

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

享受吧!

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

【讨论】:

  • 当您找到真正的解决方案时,我已将接受的答案更改为您的答案,谢谢。 :)
  • 我正在使用 Compass 构建带有 Sublime Text 的 SASS,#3 是关键。谢谢你。请注意,顺序很重要;打开您已经监视的文件不会导致它开始上传。但是打开它然后再次监视它(#1)。
  • @jwinn,你是对的。在项目之间快速切换时也是如此。如果您切换到不同的项目,monitor 指令将丢失并且必须重新分配。对于经常被打断的人来说,这在返回项目时会造成很大的困惑。
  • 太棒了!这就是我一直在寻找的几个小时......非常感谢!
  • 这对我很有帮助,我每天使用它十几次。有没有办法将文件监控添加为项目设置?因此,当您打开该项目时,会自动监视指定的文件(例如 /app.min.css、/app.min.js)?谢谢!
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

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

        【讨论】:

          【解决方案6】:

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

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

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

          【讨论】:

            【解决方案7】:

            如果在保存文件时编译了 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命令,关闭编译文件。

            这一切几乎是瞬间发生的,因此您甚至不会注意到打开了一个新标签。

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-10-27
              • 1970-01-01
              • 2015-03-03
              • 2016-06-26
              • 1970-01-01
              相关资源
              最近更新 更多