【问题标题】:Develop SASS locally, upload on change在本地开发 SASS,在更改时上传
【发布时间】:2011-11-20 04:12:57
【问题描述】:

我是一名从 CSS 过渡到 SASS 的前端开发人员。我已经在我的本地机器上安装了 Ruby 和 Compass,并且 Compass “手表”运行良好。

但是,我仍然得到本地 CSS 文件,每次微小更改后我都必须手动 FTP 到服务器,以查看所做的更改。我想自动化这个。

我确实找到了建议使用 rsync 的 this thread,但我使用的是 Windows,我觉得设置 rsync 真的很困难。

有没有什么方法可以使用 Ruby 来实现自动化?我想要得到的工作流程:

  1. 我将 SCSS 文件保存在 VIM 中。
  2. Compass Watch 检测到更改并编译一个新的 CSS 文件
  3. 一些神奇的工具检测到 CSS 文件的变化,上传到我的服务器
  4. 我切换到 Chrome,按 F5,看看变化

除了第 3 步,我什么都能做。有什么想法吗? (这不涉及 Linux 或仅限 Mac 的软件?)

【问题讨论】:

    标签: sass compass-sass


    【解决方案1】:

    我不同意 Roy 和 Adam,在使用 Wordpress 主题时,我在远程开发服务器上进行开发。我有一个团队添加内容和其他更新数据库的编辑,作为开发人员,我很难 100% 地在本地工作。他们用内容更新的 sql 文件在与我的 sql 文件(你知道主题选项设置等等)之后不会很好地融合。

    由于这个原因,我一直避免使用 SASS。

    我的最佳工作流程是编辑我的 scss 文件 -> 自动编译为 css -> 自动上传到搜索(就像在保存时上传) -> livereload 发生并且我看到了编辑(我可以没有这个最后步骤)。

    我还没有尝试过,但我发现这个链接似乎是迄今为止最接近的答案。Using SASS with Remote Setup

    旁注:在本地工作并不总是最佳设置。这不是一个答案,这是我第 8 次看到这个问题的类似答案。

    更新:刚刚在没有 Codekit 的情况下尝试过,只是 sass --watch,效果很好!

    另一个更新:我进一步修改了处理 sass 和远程开发的方式。 我知道使用 Sublime,同时打开我的 .scss 和 .css 文件。然后我使用 SFTP(一个 sublime 包)到“监控文件”,它会在直接编辑它之外寻找对文件的更改,然后我打开终端并 sass 我的 scss 文件,现在每次我在本地保存它然后编译后的 css 文件会自动上传到我的服务器!希望有道理,也许我会做一个视频展示。

    【讨论】:

    • 抱歉复活后,但很好的解决方案。使用 sublime 已经有一段时间了,从未在 sftp 中看到“监控文件”。我在终端中使用指南针来观看效果很好的 scss 文件……我相信实际上是一样的。
    • 我在精神上逐步解决这个问题,然后在谷歌上搜索了我必须确定的问题......这篇文章给了我“正确的,这应该工作”来让它工作,并且肯定是的。谢谢:D
    【解决方案2】:

    自 2011 年提出该问题以来,Compass 已经发展,现在提供 callback functions 以完全按照问题中的要求进行操作:

    对于第 3 步,您可以使用 on_stylesheet_savedon_sourcemap_saved 回调函数将您的 *.css 和 *.css.map 文件上传到生产服务器。

    如何做到这一点的示例代码可以在StackOverflow answer中找到

    【讨论】:

      【解决方案3】:

      我在 sass (scss) 开发和远程开发站点上的预览处于类似的位置。在 Windows 上开发时,我使用 Sublime Text 2 进行编辑,使用 FTP-Sync 插件在保存时自动上传。

      这个插件有一个方便的选项来标记为文件保存而监视的文件夹,这会触发它检查不同的路径以进一步上传文件更改。因此,您可以标记您的 scss 文件夹,对 scss 文件进行更改并保存,这会提醒 ST2 监视 css 文件夹(您可以延迟构建以留出足够的时间进行编译)并上传任何更改的文件。

      为给定项目设置软件并设置 FTP 同步后,您的操作相当于 1) 编辑和保存,2) 等待几秒钟,3) 刷新浏览器以查看更改。 (如果此时站点看起来已损坏,您可能需要将延迟设置增加一秒并再次保存文件以再次触发该过程。)

      我不确定如何在其他平台上为远程站点完成此操作,但我想知道 Coda 2 是否有一些可能适用于 Mac OS 用户的选项。

      【讨论】:

        【解决方案4】:

        根据我的经验,最好的方法是这样工作:

        1. 您在某个地方有一个站点 - 这个站点的位置和复杂程度并不重要;
        2. 你有本地的 SASS 文件和从这些 SASS 文件生成的 CSS;
        3. 安装 Fiddler2(网络代理)
        4. 将其配置为捕获对 CSS 文件的请求并将响应替换为您的本地 CSS 文件。

        因此,如您所见,您可以使用本地 CSS 文件而不是远程文件。因此,您无需在每次构建 SASS 时都上传 CSS。

        【讨论】:

          【解决方案5】:

          Automatically Upload CSS After Sass is Compiled.

          1. 安装: gem install net-ssh gem install net-sftp

          2. 添加到 config.rb:

          `

          require 'net/ssh'
          require 'net/sftp'
          
          http_path = "/"
          css_dir = "/"
          sass_dir = "/sass"
          images_dir = "images"
          javascripts_dir = "js"
          
          output_style = :expanded
          environment = :development
          
          remote_theme_dir_absolute = '/path/to/where/you/want/to/save/the/file/on/remote/server'
          
          sftp_host = 'your-host.com' # Can be an IP
          sftp_user = 'your-user.com' # SFTP Username
          sftp_pass = 'xxxxxxxxxxx' # SFTP Password
          
          on_stylesheet_saved do |filename|
          
            Net::SFTP.start( sftp_host, sftp_user , :password => sftp_pass) do |sftp|
              puts sftp.upload! '/path/to/local/style.css', remote_theme_dir_absolute + '/' + 'style.css'
              end
            puts ">>>> Compass is polling for changes. Press Ctrl-C to Stop"
          end
          

          `

          仅适用于 ftp:

          require 'net/ftp'
          
          
          http_path = "/"
          css_dir = ".."
          sass_dir = ".."
          images_dir = "images"
          javascripts_dir = "js"
          
          project_type = :stand_alone
          output_style = :compressed
          line_comments = false
          environment = :development
          
          ftp_host = 'your-host.com' # Can be an IP
          ftp_user = 'your-user' # FTP Username
          ftp_pass = 'xxxxxxxxx' # FTP Password
          
          TXT_FILE_OBJECT = File.new('/path/to/local/style.css')
          
          on_stylesheet_saved do |filename|
            Net::FTP.open( ftp_host, ftp_user , ftp_pass) do |ftp|
              ftp.putbinaryfile(TXT_FILE_OBJECT, "/path/on/remote/server/#{File.basename(TXT_FILE_OBJECT)}")
              end
            puts ">>>> Compass is polling for changes. Press Ctrl-C to Stop"
          end
          

          将目录和文件路径更改为您的...

          【讨论】:

            【解决方案6】:

            最简单的解决方案是在本地开发(这是最佳实践)。在您的计算机上运行一个 Web 服务器(试试 XAMP for Windows),所有更改都将立即可见,无需上传。仅在完成后上传。

            【讨论】:

            • 理论上听起来不错,但我正在开发一个非常大的、由数据库支持且动态生成的现有网站。在本地镜像它根本不是我的方案的选择......
            • 我实际上对此进行了更多思考,并决定使用此解决方案的一个版本。我不会运行网络服务器,而是将生成的网页另存为 HTML,然后在本地进行开发。接受您的回答,谢谢!
            • 我知道在本地启动和运行一个大型项目可能会很痛苦,但通常你会很高兴你最终做到了。您的解决方案只是造型时看起来不错。祝你好运!
            • 如果您需要 ftp 到 squarespace 之类的云 cms,或者在您无法在本地访问源代码的地方进行 shopify 怎么办?
            • 不幸的是,它并不总是像这个答案中描述的那么简单。如果你在一个团队中工作怎么办?两名开发人员处理 SASS 文件,需要编译 CSS 并将其上传到客户端的临时服务器。在这里,您将需要稍微复杂的设置。
            猜你喜欢
            • 1970-01-01
            • 2015-02-07
            • 1970-01-01
            • 2018-09-15
            • 2021-05-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多