cypresslab/compass-elephant-bundle

将CompassElephant集成到Symfony2

v0.1.0 2014-11-07 23:00 UTC

This package is auto-updated.

Last update: 2024-08-29 03:31:20 UTC


README

Build Status SensioLabsInsight

Total Downloads Monthly Downloads

一个用于在Symfony2项目中使用CompassElephant库的Bundle

此Bundle会扫描您的每个请求中的compass项目,并检查是否需要重新编译。它处理依赖项,因此您可以使用compass与@importsprite生成等功能而不会出现问题。让Symfony监控您的项目并忘掉它。

注意

此Bundle的版本 >= 0.1 不再使用原生检查器,因为1.x版本后的compass不再支持它。

staleness_checker选项仍然可用以保持兼容性,但它会被忽略。

安装

composer

在symfony项目的根目录中输入以下命令即可使用composer安装

$ composer require cypresslab/compass-elephant-bundle:~1.0

注册Bundle

在dev部分中的AppKernel.php文件中注册Bundle

app/AppKernel.php

<?php
if (in_array($this->getEnvironment(), array('dev', 'test'))) {
    // ...other bundles ...
    $bundles[] = new Cypress\CompassElephantBundle\CypressCompassElephantBundle();
}

配置

在config文件中添加配置(用于开发环境)

app/config_dev.yml

cypress_compass_elephant:
    compass_projects:
        my-nice-project:
            path: %kernel.root_dir%/../src/Cypress/DemoBundle/Resources/public/compass

my-compass-project是此示例的随机名称。选择您想要的名称

path必须是现有目录。默认情况下,如果目录为空,CompassElephant将尝试初始化compass项目

对您的服务器CPU温柔一些:在生产环境中移除监听器,因为它不是必需的。您将提供静态CSS文件

app/config_prod.yml

cypress_compass_elephant:
    register_listener: false

重要

请记住,apache用户需要写入“sass”文件夹、“stylesheet”文件夹和config.rb文件的权限。如果您使用compass默认设置,则所有内容都在同一项目文件夹中。您可以授予所有文件的权限。但您也可以将stylesheets文件夹的位置更改为项目外。CompassElephant解析配置文件并使用它,但请记住在compass配置文件中定义的文件夹上设置正确的权限。

将样式表添加到模板中

assetic

{% stylesheets filter="yui_css"
    "@CypressDemoBundle/Resources/public/compass/stylesheets/screen.css" %}
    <link href="{{ asset_url }}" type="text/css" rel="stylesheet" />
{% endstylesheets %}

不使用assetic

<link href="{{ asset('bundles/cypressdemo/compass/stylesheets/screen.css') }}" type="text/css" rel="stylesheet" />

享受吧!

完整的配置参考

cypress_compass_elephant:
    register_listener: true
    compass_binary_path: "/usr/local/bin/compass"
    compass_projects:
        blog:
            path: %kernel.root_dir%/../src/Cypress/BlogBundle/Resources/public/compass
            config_file: config.rb
            auto_init: true
            target: sass/screen.scss
  • register_listener 是否注册编译项目的监听器,如果需要,则在每个请求上。**在生产环境中关闭此功能**,因为您不希望在每次请求上都监控您的scss文件...即使它只需要5-10毫秒(确保在部署期间上传编译后的CSS文件)...
  • compass_binary_path用于强制使用不是默认的二进制文件,即“which compass”得到的二进制文件。
  • compass_projects是您symfony项目中的所有compass项目的集合(可能有一个用于应用程序)
  • config_file是compass的配置文件名称。默认为config.rb,标准文件。您可以使用此设置根据环境编译不同的样式表
  • auto_init如果设置为false,将禁用空文件夹上的初始化功能。默认为true
  • target告诉CompassElephant编译单个文件,而不是整个compass项目。目标应该是**从compass项目根目录的相对路径**

命令行

有一个简单的命令可以编译所有compass项目。这对于部署程序(capifony)非常有用

例如,在capifony部署中,可以触发此命令

$ ./app/console cypress:compass:compile -e=prod

工作原理

此包注册了一个事件监听器,每次请求都会检查在config_dev.yml文件中定义的项目是否处于“干净”状态或需要重新编译。

如果项目不需要重新编译,它会给symfony增加一个非常小的开销。

阅读CompassElephant的readme文件获取其他有用的信息。