在 Symfony2 中使用 Compass 和 Assetic 的 Foundation5

Posted

技术标签:

【中文标题】在 Symfony2 中使用 Compass 和 Assetic 的 Foundation5【英文标题】:Foundation5 with Compass and Assetic in Symfony2 【发布时间】:2014-07-27 08:51:50 【问题描述】:

我想在 Symfony2 中使用 Compass 和 Assetic 配置 Foundation5,正如他们在 http://foundation.zurb.com/docs/sass.html 所说的那样,我已经安装了 Foundation:

npm install -g bower grunt-cli
gem install foundation

config.yml已经这样配置了:

# Assetic Configuration
assetic:
    debug:          %kernel.debug%
    use_controller: false
    filters:
        compass: 
            require: ['zurb-foundation']
            apply_to: ".(scss|sass)$"

然后我在基本 SCSS 文件 @import "foundation"; 中导入,但是当我运行时:php app/console assetic:dump 我有以下错误:

[Assetic\Exception\FilterException]                                                                                           
  An error occurred while running:                                                                                              
  '/usr/bin/ruby' '/usr/bin/compass' 'compile' '/tmp' '--images-dir' '/srv/www/vhosts/proj/app/../src/pro/MainB  
  undle/Resources/public/images' '--config' '/tmp/assetic_compass0NW1Qc' '--sass-dir' '' '--css-dir' '' '/tmp/assetic_compassT  
  0AFvM.scss'                                                                                                                   
  Error Output:                                                                                                                 

  Output:                                                                                                                       
     create web/sprites/flags-s566f9ef717.png                                                                                   
     create web/sprites/flags-s566f9ef717.png                                                                                   
      error assetic_compassT0AFvM.scss (Line 7: File to import not found or unreadable: foundation.                             
  Load paths:                                                                                                                   
    /tmp                                                                                                                        
    /usr/share/compass/frameworks/blueprint/stylesheets                                                                         
    /usr/share/compass/frameworks/compass/stylesheets                                                                           
    /srv/www/vhosts/proj/src/pro/MainBundle/Resources/public/css                                                 
    /srv/www/vhosts/proj/src/pro/CompanyBundle/Resources/public/css                                              
    /srv/www/vhosts/proj/web/bundles/pro/css                                                                 
    Compass::SpriteImporter)                                                                                                    
     create assetic_compassT0AFvM.css                                                                                           
  Input:                                                                                                                        
  @import "base";                                                                                                               
  @import "header";                                                                                                             
  @import "global";                                                                                                             
  @import "foundation"; 

我还看到了升级页面http://foundation.zurb.com/docs/upgrading.html,他们说要更改:

require "zurb-foundation"

到:

add_import_path "bower_components/foundation/scss"

但是无法正常工作,您对如何配置它以使其正常工作有什么建议吗?


配置更改

如果我更改 config.yml 而不是 require 我使用 plugins

# Assetic Configuration
assetic:
    debug:          %kernel.debug%
    use_controller: false
    filters:
        compass: 
            plugins: ['zurb-foundation']
            apply_to: ".(scss|sass)$"

我收到此错误:

  [Assetic\Exception\FilterException]                                                                                           
  An error occurred while running:                                                                                              
  '/usr/bin/ruby' '/usr/bin/compass' 'compile' '/tmp' '--images-dir' '/srv/www/vhosts/proj/app/../src/pro/MainB  
  undle/Resources/public/images' '--config' '/tmp/assetic_compass0qewOn' '--sass-dir' '' '--css-dir' '' '/tmp/assetic_compassQ  
  uKtrw.scss'                                                                                                                   
  Error Output:                                                                                                                 
  LoadError on line ["36"] of /usr/lib/ruby/1.9.1/rubygems/custom_require.rb: cannot load such file -- zurb-foundation          
  Run with --trace to see the full backtrace                                                                                    
  Input:                                                                                                                        
  @import "base";                                                                                                               
  @import "header";                                                                                                             
  @import "global";                                                                                                             
  @import "foundation";

【问题讨论】:

您确实意识到您正在阅读用于升级 Ruby on Rails 基础的文档,而不是 Symfony? 在foundation.zurb.com/docs/upgrading.html 中,有一段Upgrade manually with Compass 并且在第3 步他们说:TELL COMPASS WHERE FOUNDATION RESIDES 我认为应该有一个连接,因为Symfony2 使用Compass,这就是我想要配置的。 你正在阅读的部分提到config.rb文件(这是Ruby文件扩展名)和require "zurb-foundation"add_import_path "..."是绝对有效的ruby语法。 指南针需要config.rb文件才能配置!现在我知道 Compass 的配置是由 Symfony2 中的 Assetic 管理的。所以我只是徘徊在config.yml 中放置什么配置,以便与Foundation5 正常工作。 我找到了这个答案***.com/a/20619652,但按照建议做我有同样的错误:File to import not found or unreadable: foundation. 【参考方案1】:

我终于在config.yml 中找到了正确的配置:

# Assetic Configuration assetic:
    debug:          %kernel.debug%
    use_controller: false
    filters:
        compass: 
            load_paths:
                 - '%kernel.root_dir%/../app/Resources/public/vendor/bower_components/foundation/scss'
            apply_to: ".(scss|sass)$"

【讨论】:

以上是关于在 Symfony2 中使用 Compass 和 Assetic 的 Foundation5的主要内容,如果未能解决你的问题,请参考以下文章

Symfony 2资产过滤器异常中的指南针

在 Compass 中使用数据 URI 的新 Bulletproof @font-face 语法

在 Rails 3.1 应用程序中使用 Sass + Compass + Blueprint

在 Windows 上通过 Visual Studio C# 和 ASP.NET 使用 Compass

关于Sass与Compass的一些笔记

Sass 和 Compass 中的背景图像路径