横向/silverstripe-lesscompiler

一个简单的less编译器,可在Silverstripe执行时运行

安装: 680

依赖项: 1

建议者: 0

安全: 0

星星: 0

关注者: 4

分支: 1

类型:silverstripe-module

0.3 2020-01-20 14:38 UTC

This package is auto-updated.

Last update: 2024-09-21 01:17:00 UTC


README

一个模块,在执行时编译定义的less文件,并将它们导出为定义的CSS文件。

目前这是一个概念验证,有很多可能的扩展选项。

此模块使用"less.php"模块来编译less文件。如果您不是通过Composer安装,则需要将其安装到您的路径中。

通过Composer安装

composer require i-lateral/silverstripe-lesscompiler 0.*

操作

此模块在控制器初始化之前检查定义的less文件的更新。如果有更改,则新的CSS将被编译并保存到定义的输出路径。

此过程仅在开发环境中运行(以避免对实时站点的性能产生不利影响),所有缓存文件都存储在默认的Silverstripe临时目录中。

基本用法

首先,在LessCompilerConfig上设置file_mappings配置变量。这应该是一个要转换的less文件及其等效导出文件的列表,例如

config.yml

LessCompilerConfig:
  file_mappings:
    "styles.less": "styles.css"
    "typography.less": "typography.css"

_config.php

LessCompilerConfig::config()->file_mappings = array(
    "styles.less" => "styles.css",
    "typography.less" => "typography.css"
);

如果您未包含less/css文件的路径,则模块假设您正在使用默认主题目录,并分别使用名为"less"和"css"的文件夹。

自定义文件路径

您可以使用以下方式定义自定义的less和css文件路径

config.yml LessCompilerConfig: file_mappings: "themes/themename/less/styles.less": "themes/themename/css/styles.css" "themes/themename/less/typography.less": "themes/themename/css/typography.css"

_config.php

LessCompilerConfig::config()->file_mappings = array(
    "themes/themename/less/styles.less" => "themes/themename/css/styles.css",
    "themes/themename/less/typography.less" => "themes/themename/css/typography.css"
);

压缩输出

默认情况下,所有输出都是压缩的,您可以使用"compress"配置变量来禁用此功能,例如

config.yml

LessCompilerConfig:
  compress: false

_config.php

LessCompilerConfig::config()->compress = false;

相对图像URL

编译器尝试将所有相对图像URL转换为以../前缀,这假设输出CSS将在与图像分开的文件夹中,但具有共同的根。您可以使用"root_path"配置变量来更改此设置

config.yml

LessCompilerConfig:
  root_path: "../../imports"

_config.php

LessCompilerConfig::config()->root_path = "../../imports";

编译前后的扩展

如果您需要在Less Compiler运行前后执行自定义函数,可以使用onBeforeLessCompileronAfterLessCompiler扩展调用。

注意 这些调用被添加到控制器中,因此您不需要将扩展添加到LessCompiler本身,只需将您的自定义代码添加到控制器的扩展中即可。例如

app/code/extensions/AppControllerExtension.php

<?php

class AppControllerExtension extends Extension
{    
    public function onBeforeLessCompiler()
    {
        // pre compiler code goes here
    }

    public function onAfterLessCompiler()
    {
        // post compiler code goes here
    }
}

app/_config/config.yml

---
Name: app
After: 'framework/*','cms/*'
---
# YAML configuration for SilverStripe
# See http://doc.silverstripe.org/framework/en/topics/configuration
# Caution: Indentation through two spaces, not tabs
SSViewer:
  theme: 'simple'

# Extensions
Controller:
  extensions:
    - AppControllerExtension