glorpen/compass-connector-bundle

Symfony2 的 AsseticCompassConnector 过滤器捆绑包

v0.4.4 2013-12-01 09:59 UTC

This package is not auto-updated.

Last update: 2024-09-14 13:41:11 UTC


README

该项目现已弃用。目前有更好的替代方案,请在新的项目中使用这些方案。

GlorpenCompassConnectorBundle

为 Symfony2 提供更好的 Compass 集成。

有关分叉和其他有趣的事情

它解决了什么问题?

此捆绑包

  • 为 compass 文件添加捆绑包命名空间 - 因此您可以执行跨捆绑包导入或使用来自其他捆绑包的资产
    • ... 并且它应该可以分发带有 compass 资产的捆绑包
  • 您不需要在 your_app/web 中安装资产 - 连接器使用来自例如 SomeBundle/Resources 目录的文件
  • 当任何依赖项被修改时,资产重新编译/更新 - 无论它是另一个导入、内联字体文件还是简单的 width: image-width(@SomeBundle:public/myimage.png);
  • 对于引用 app/Resources 目录内的文件,只需使用 @somefile.png(精灵、内联图像、scss 导入)

如何安装

  • 首先,您需要安装 ruby 连接器 gem
gem install compass-connector
  • 将要求添加到 composer.json
{
    "require": {
        "glorpen/compass-connector-bundle": "*"
    }
}
  • 在您的 AppKernel 类中启用捆绑包

app/AppKernel.php

<?php

class AppKernel extends AppKernel
{
   public function registerBundles()
   {
       $bundles = array(
           ...
           new Glorpen\Assetic\CompassConnectorBundle\GlorpenCompassConnectorBundle(),
           ...
       );
   }
}
  • 在 config.yml 中添加 assetic 过滤器配置
assetic:
    filters:
        compass_connector:
           resource: "%kernel.root_dir%/../vendor/glorpen/compass-connector-bundle/Glorpen/Assetic/CompassConnectorBundle/Resources/config/filter.xml"
           #apply_to: ".scss$" # uncomment to auto-apply to all scss assets

如果您遇到以下错误

检测到范围扩大注入:定义 "assetic.filter.compass_connector.resolver" 引用了属于较窄范围的服务 "templating.asset.default_package"。通常,将 "assetic.filter.compass_connector.resolver" 移动到 "request" 范围或依赖提供者模式以注入容器本身,并在需要时请求服务 "templating.asset.default_package" 会更安全。然而,在罕见的情况下,这可能不是必要的,然后您可以将引用设置为 strict=false 以消除此错误。

... 或者如果您只想更改生成的资产 URL(例如 CDN)。

您需要将以下配置添加到项目中(请记住更改 URL)

framework:
   templating:
      assets_base_urls:
         http: ["https://:8000"]
         ssl: ["https://:8000"]

用法

有五种类型的 "路径"

  • app: 看起来像 @MyBundle:public/images/asset.png
  • app 全局:不能转换为 URL,看起来像 @data/image.png 并解析为 app/Resources/data/image.png
  • 绝对路径:以单个 / 开头,应该是公开可用的,将解析为 web/
  • vendor: 相对路径,应仅用于 compass 插件(例如 zurb-foundation、blueprint)
  • 绝对路径:以 /http:// 等. 开头,并且连接器不会更改

一些示例

@import "@SomeBundle:scss/settings"; /* will resolve to src/SomeBundle/Resources/scss/_settings.scss */
@import "foundation"; /* will include foundation scss from your compass instalation */

width: image-size("@SomeBundle:public/images/my.png"); /* will output image size of SomeBundle/Resources/public/images/my.png */
background-image: image-url("@SomeBundle:public/images/my.png"); /* will generate url with prefixes given by Symfony2 config */
@import "@SomeBundle:sprites/*.png"; /* will import sprites located in src/SomeBundle/Resources/sprites/ */

此捆绑包使用 Assetic,CompassConnector 过滤器名称为 compass_connector

配置

您可以通过设置以下 DIC 参数来更改默认配置

parameters:
   assetic.filter.compass_connector.plugins:
      "zurb-foundation": ">4"
   assetic.filter.compass_connector.imports: ["/some/path"]
   assetic.filter.compass_connector.cache_path: %kernel.root_dir%/cache/compassConnector
   assetic.filter.compass_connector.compass_bin: /usr/bin/compass
   assetic.filter.compass_connector.resolver.output_dir: %kernel.root_dir%/../web/compass
   assetic.filter.compass_connector.resolver.vendor_prefix: vendors

对于 assetic.filter.compass_connector.plugins,您可以提供列表形式的参数,例如 ["zurb-foundation"] 或带有所需 gem 版本的数组:{"zurb-foundation":">=4"}