【问题标题】:Compass config.rb Location指南针 config.rb 位置
【发布时间】:2013-10-05 09:08:45
【问题描述】:

我想将 Compass 添加到我现有的项目中。 我想保持我当前的项目结构,看起来像这样(简化):

app/
build/    
 |-compass/
assets/
 |-css/
   |-scss
 |-js/
 |-img/

所以我想将我所有的 SASS 文件放在 \assets\css\scss 下,并且我想将编译后的 CSS 文件输出到 \assets\css

跑步:

compass create --bare --sass-dir "assets\css\scss" --css-dir "assets\css"

直接在我的根目录下创建 Compass config.rb 文件。

但是,我希望文件位于 \build\compass 下。

  1. 如何控制 Compass 创建 config.rb 文件的位置?
  2. Compass 文档说 config.rb 中的声明(例如 css_dir、sass_dir 等)都与 project_path 相关。我在哪里定义 project_path?

【问题讨论】:

    标签: sass compass-sass


    【解决方案1】:

    Compass 在与您运行命令的目录相同的目录中创建 config.rb。项目路径是 config.rb 所在的位置。您可以随意将 config.rb 放置在任何您喜欢的位置,只要您调整资产的路径即可。

    【讨论】:

    • 我从项目根目录运行命令,这就是创建 config.rb 的地方。如果我移动文件,Compass 怎么知道我把它移到了哪里?例如,它需要知道才能运行编译命令。此外,在移动文件后,在那里定义的路径需要保持相对于我运行命令的位置,而不是新位置。那么我怎样才能移动文件呢?
    • 您从与您的 config.rb 相同的目录运行 sass watch(或编译)
    • 这让我很困惑。为什么库会期望它可以使用诸如“config”之类的通用名称并将其放在根目录中?我正在努力让它与 ember-cli 和购买的主题一起使用,目前还不清楚如何与做出自己假设的其他工具集成。
    • 这将是 Compass 维护者的一个问题。正如我已经说过的,只要您从同一目录运行compass 命令,config.rb 就可以放在您想要的任何位置。
    【解决方案2】:

    这是 config.rb 的一个例子:

    # Require any additional compass plugins here.
    require 'compass/import-once/activate'
    
    # Set this to the root of your project when deployed:
    http_path = "/"
    css_dir = "../../assets/css"
    sass_dir = "../../assets/css/scss"
    
    # You can select your preferred output style here (can be overridden via the command line):
    # output_style = :expanded or :nested or :compact or :compressed
    output_style = :expanded
    
    # To disable debugging comments that display the original location of your selectors. Uncomment:
    line_comments = false
    
    # Enable source map
    sourcemap = true
    

    有了这个 config.rb 设置,你的项目文件夹应该像(如你所写):

    MyFolder
    ├ app
    ├ build 
    │ └ compass
    │   └ config.rb
    └ assets
      ├ css/
      │ └ scss/
      ├ js
      └ img
    

    如果您没有 config.rb,只需创建一个新文件“config.rb”并复制/粘贴到我编写的配置中。

    打开您的终端,输入 MyFolder/build/compass 然后启动您的 compass 命令,例如:compass watch


    记住

    您必须在 config.rb 文件所在的同一文件夹中执行您的 compass 命令。所以在这种情况下,在 MyFolder/build/compass 中。否则指南针不起作用。

    【讨论】:

      【解决方案3】:

      我不明白您为什么要构建这样的项目...我的意思是为什么不将 scss 放入构建中,然后资产中的所有内容都可以部署用于生产?

      所以: 1. 运行(从“app”目录)

      compass create build --http-pat="../" --sass-dir="compass/scss" --css-dir="../assets/css" --javascripts-dir="../assets/js" --images-dir="../assets/img"
      

      将创建项目文件夹和文件,如下所示:

      app
       |-- build
       |     |--config.rb
       |     |-- compass
       |            |-- scss
       |-- assets
       |     |-- css
       |     |-- img
       |     |-- js
      
      1. 同样,从应用目录中运行:

      compass config "build/config.rb" --http-pat="../" --sass-dir="compass/scss" --css-dir="../assets/css" --javascripts-dir="../assets/js" --images-dir="../assets/img"

      将简单地创建构建目录并在其中放置一个包含这些值的配置文件。

      【讨论】:

      • 为什么 OP 想要在哪里拥有他们的目录很重要?看起来你根本没有回答这个问题。
      • 我的回答效果很好。如果他想要 assets/css 文件夹中的 scss,OP 只需修改 --sass-dir。我的回答与多个场景或文件夹结构相关。
      • 我关于从你的 scss 中分离输出的观点是完全有效的!
      猜你喜欢
      • 1970-01-01
      • 2016-09-06
      • 2014-04-29
      • 2013-11-16
      • 1970-01-01
      • 2011-07-02
      • 1970-01-01
      • 2016-05-15
      相关资源
      最近更新 更多