glorpen / compass-connector-bundle
Symfony2 的 AsseticCompassConnector 过滤器捆绑包
v0.4.4
2013-12-01 09:59 UTC
Requires
- php: >=5.3.2
- glorpen/assetic-compass-connector: >=0.2.2
- kriswallsmith/assetic: *
- symfony/symfony: 2.*
Requires (Dev)
- phpunit/phpunit: 3.*
Suggests
- glorpen/style-embedder-bundle: Embeds styles into HTML DOM
README
该项目现已弃用。目前有更好的替代方案,请在新的项目中使用这些方案。
GlorpenCompassConnectorBundle
为 Symfony2 提供更好的 Compass 集成。
有关分叉和其他有趣的事情
- https://bitbucket.org/glorpen/glorpencompassconnectorbundle
- https://github.com/glorpen/GlorpenCompassConnectorBundle
它解决了什么问题?
此捆绑包
- 为 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"}