【问题标题】:Compass Source in Multiple Directories多个目录中的罗盘源
【发布时间】:2012-03-06 00:12:50
【问题描述】:

您是否在多个目录中成功编译过 SASS?你能设置罗盘来递归地观察一个目录吗?

我已阅读有关 add_import_path 的文档,但我非常感谢一些示例代码,因为我(我相当确定)从未编写过一行 ruby​​ 代码。

我问的原因是我有几个共享一些标准 scss 的项目。我希望更改共享 scss 以级联到所有项目。

谢谢。

【问题讨论】:

    标签: compass-sass sass


    【解决方案1】:

    假设您有以下目录结构:

    project
        |-- config.rb
        +-- apps
            |-- main.scss
            |-- app1
                +-- appst1.scss
            |-- app2
                +-- appst2.scss
            +-- app3
                +-- appst3.scss
    

    然后调整你的config.rb:

    sass_dir = "apps"
    add_import_path "apps"
    ...
    

    并在您的 main.scss 中包含其他 scss 文件:

    @import "app1/appst1";
    @import "app2/appst2";
    @import "app3/appst3";
    

    【讨论】:

    • 感谢 Reto 的回复。当您有多个(不相关的)项目和一个通用的 scss 文件时,问题就更多了。 ``` project1 |-- reset.scss +-- project1.scss project2 |-- reset.scss +-- project2.scss project3 |-- reset.scss +-- project3.scss ```
    • 我刚刚在上述link 中发布了一个新答案。希望对您有所帮助。
    【解决方案2】:

    这是我的解决方案,它支持基于两个 Ruby 脚本的多个独立 SASS 项目的批量罗盘编译/监视。

    包含 Ruby 文件的文件夹结构:

    Root
    --compile.rb
    --watch.rb
    --Module1
    ----config.rb
    ----css
    ----sass
    --Module2
    ----config.rb
    ----css
    ----sass
    --Module3
    ----config.rb
    ----css
    ----sass
    

    运行 compile.rbwatch.rb 并使用几个参数表示包含 config.rb 文件的模块文件夹的路径。

    即:ruby compile.rb Module1/ Module2/ Module3/

    编译.rb

    require 'rubygems'
    require 'compass'
    require 'compass/exec'
    
    ARGV.each do |arg|
      Compass::Exec::SubCommandUI.new(["compile", arg, "--force"]).run!
    end
    

    即:ruby watch.rb Module1/ Module2/ Module3/

    watch.rb

    require 'rubygems'
    require 'compass'
    require 'compass/exec'
    
    threads = []
    ARGV.each do |arg|
      threads << Thread.new {
        Compass::Exec::SubCommandUI.new(["watch", arg, "--force"]).run!
      }
      sleep(1)
    end
    threads.each { |thr| thr.join }
    

    请注意,我们需要为每个指南针手表创建一个单独的线程(因为它们是阻塞进程)。 sleep(1) 是必要的,因为Compass::Exec::SubCommandUI 实际上不是线程安全的,并且可能在同一个模块上运行多个监视,而不是每个监视。如果发生这种情况,请尝试增加 sleep 的值。

    在所有模块中创建一个类似的config.rb 文件。您可能必须使用compass init 来获得罗盘识别的第一个config.rb

    config.rb

    http_path = "/"
    css_dir = "css"
    sass_dir = "sass"
    

    【讨论】:

      猜你喜欢
      • 2012-07-13
      • 1970-01-01
      • 1970-01-01
      • 2013-11-02
      • 2017-01-16
      • 2015-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多