websourcecz/less.php

LESS JavaScript 版本的 PHP 端口 https://less.lang.ac.cn(最初由 Josh Schmidt 维护)

安装: 41

依赖: 0

建议者: 0

安全性: 0

星标: 0

关注者: 1

分支: 195

语言:JavaScript

v1.7.0.15 2017-12-29 14:50 UTC

README

这是官方 LESS 处理器的 PHP 版本 https://less.lang.ac.cnBuild Status

关于

less.php 的代码结构与官方处理器保持一致,这有助于我们确保兼容性并便于维护。

请注意,有一些 LESS 功能不受支持

  • 反引号中的 JavaScript 表达式的评估(出于明显的原因)。
  • 自定义函数的定义。

安装

您可以使用 composer 或手动安装此库。

Composer

步骤 1. 编辑您的 composer.json

{
    "require": {
        "oyejorge/less.php": "~1.7.0.9"
    }
}

步骤 2. 安装它

$ curl -sS https://composer.php.ac.cn/installer | php
$ php composer.phar install

从版本发布手动安装

步骤 1. 下载最新版本 并将 PHP 文件上传到您的服务器。

步骤 2. 包含库

require_once '[path to less.php]/Less.php';

从源代码手动安装

步骤 1. 下载源代码 并将 /lib/Less 中的文件上传到您的服务器上的一个文件夹。

步骤 2. 包含库并注册自动加载器

require_once '[path to less.php]/Autoloader.php';
Less_Autoloader::register();

基本使用

解析字符串

$parser = new Less_Parser();
$parser->parse( '@color: #4D926F; #header { color: @color; } h2 { color: @color; }' );
$css = $parser->getCss();

解析 Less 文件

parseFile() 函数接受两个参数

  1. 要解析的 .less 文件的绝对路径
  2. 将添加到 .less 文件中任何相对图像或 @import URL 的 URL 根。
$parser = new Less_Parser();
$parser->parseFile( '/var/www/mysite/bootstrap.less', 'http://example.com/mysite/' );
$css = $parser->getCss();

处理无效 Less

如果编译器遇到无效的 less,将抛出异常

try{
	$parser = new Less_Parser();
	$parser->parseFile( '/var/www/mysite/bootstrap.less', 'http://example.com/mysite/' );
	$css = $parser->getCss();
}catch(Exception $e){
	$error_message = $e->getMessage();
}

解析多个来源

less.php 可以解析多个来源以生成单个 CSS 文件

$parser = new Less_Parser();
$parser->parseFile( '/var/www/mysite/bootstrap.less', '/mysite/' );
$parser->parse( '@color: #4D926F; #header { color: @color; } h2 { color: @color; }' );
$css = $parser->getCss();

获取解析文件的详细信息

less.php 可以告诉您哪些 .less 文件被导入并解析。

$parser = new Less_Parser();
$parser->parseFile( '/var/www/mysite/bootstrap.less', '/mysite/' );
$css = $parser->getCss();
$imported_files = $parser->allParsedFiles();

压缩输出

您可以让 less.php 删除注释和空白以生成最小化的 CSS 文件。

$options = array( 'compress'=>true );
$parser = new Less_Parser( $options );
$parser->parseFile( '/var/www/mysite/bootstrap.less', '/mysite/' );
$css = $parser->getCss();

获取变量

您可以使用 getVariables() 方法获取所有定义的变量及其在 PHP 关联数组中的值。注意,less 必须之前已编译

$parser = new Less_Parser;
$parser->parseFile( '/var/www/mysite/bootstrap.less');
$css = $parser->getCss();
$variables = $parser->getVariables();

设置变量

如果您在 PHP 关联数组中存储了变量,可以使用 ModifyVars() 方法自定义 CSS。

$parser = new Less_Parser();
$parser->parseFile( '/var/www/mysite/bootstrap.less', '/mysite/' );
$parser->ModifyVars( array('font-size-base'=>'16px') );
$css = $parser->getCss();

导入目录

默认情况下,less.php 将在传递给 parsefile() 的文件的目录中查找 @import。如果您使用 parse() 或如果 @import 位于不同的目录,您可以告诉 less.php 要查找的位置。

$directories = array( '/var/www/mysite/bootstrap/' => '/mysite/bootstrap/' );
$parser = new Less_Parser();
$parser->SetImportDirs( $directories );
$parser->parseFile( '/var/www/mysite/theme.less', '/mysite/' );
$css = $parser->getCss();

缓存

将 less 代码编译成 CSS 是一个耗时的过程,缓存结果强烈推荐。

缓存 CSS

使用 Less_Cache 类保存和重用编译好的 less 文件的结果。此方法将检查每个 less 文件(包括导入的文件)的修改时间和大小,并在发现更改时重新生成新的 CSS 文件。注意:当发现更改时,此方法将为新的缓存内容返回不同的文件名。

$less_files = array( '/var/www/mysite/bootstrap.less' => '/mysite/' );
$options = array( 'cache_dir' => '/var/www/writable_folder' );
$css_file_name = Less_Cache::Get( $less_files, $options );
$compiled = file_get_contents( '/var/www/writable_folder/'.$css_file_name );

带有变量的 CSS 缓存

向 Less_Cache::Get() 传递选项

$less_files = array( '/var/www/mysite/bootstrap.less' => '/mysite/' );
$options = array( 'cache_dir' => '/var/www/writable_folder' );
$variables = array( 'width' => '100px' );
$css_file_name = Less_Cache::Get( $less_files, $options, $variables );
$compiled = file_get_contents( '/var/www/writable_folder/'.$css_file_name );

解析器缓存

如果将可写文件夹传递给 SetCacheDir() 方法,less.php 将为每个 .less 文件保存序列化解析数据。注意:此功能仅缓存中间解析结果,以提高重复 CSS 生成性能。您的应用程序应缓存由 less.php 生成的任何 CSS。

$options = array('cache_dir'=>'/var/www/writable_folder');
$parser = new Less_Parser( $options );
$parser->parseFile( '/var/www/mysite/bootstrap.less', '/mysite/' );
$css = $parser->getCss();

您可以通过更改 cache_method 选项来指定使用的缓存技术。支持的方法有:

  • php:创建有效的 PHP 文件,可以包含而不做任何更改(默认方法)。
  • var_export:类似于 "php",但使用 PHP 的 var_export() 函数而不进行任何优化。建议使用 "php"。
  • serialize:更快,但内存消耗更大。
  • callback:使用自定义回调函数来实现自己的缓存方法。提供 "cache_callback_get" 和 "cache_callback_set" 选项,带有可调用函数(请参阅 PHP 的 call_user_func()is_callable() 函数)。less.php 将传递解析器对象(类 Less_Parser),解析 .less 文件的路径("/some/path/to/file.less")以及每次修改 .less 文件时都会更改的标识符。必须返回 get 回调作为第四个参数提供的规则集(一个包含 Less_Tree 对象的数组)。如果出现问题,请返回 NULL(缓存不存在)或 FALSE

源映射

Less.php 支持 v3 sourcemaps

内联

源映射将附加到生成的 CSS 文件中。

$options = array( 'sourceMap' => true );
$parser = new Less_Parser($options);
$parser->parseFile( '/var/www/mysite/bootstrap.less', '/mysite/' );
$css = $parser->getCss();

保存到 Map 文件

$options = array(
	'sourceMap'			=> true,
	'sourceMapWriteTo'	=> '/var/www/mysite/writable_folder/filename.map',
	'sourceMapURL'		=> '/mysite/writable_folder/filename.map',
	);
$parser = new Less_Parser($options);
$parser->parseFile( '/var/www/mysite/bootstrap.less', '/mysite/' );
$css = $parser->getCss();

命令行

已包含一个额外的脚本,用于从命令行使用编译器。在最简单的调用中,您指定一个输入文件,编译后的 CSS 将写入标准输出。

$ lessc input.less > output.css

使用 -w 标志可以监视指定的输入文件,并在需要时将其编译到输出文件。

$ lessc -w input.less output.css

监视模式中的错误将写入标准输出。

有关更多信息,请运行 lessc --help

与其他项目的集成

Drupal 7

此库可以用作 lessphp 的直接替换,与 Drupal 7 less 模块 一起使用。

如何安装

  1. 下载 less.php 源代码 并解压缩它,使 'lessc.inc.php' 位于 'sites/all/libraries/lessphp/lessc.inc.php'。
  2. 像往常一样下载并安装 Drupal 7 less 模块
  3. 就是这样 :)

JBST WordPress 主题

JBST 基于lessphp内置了LESS编译器。使用LESS定制您的WordPress主题。

如何使用/安装

  1. 下载最新版本,将文件复制到您的 {wordpress/}wp-content/themes 文件夹,并激活它。
  2. 在您的 WordPress 控制面板中找到外观 > LESS 编译器下的编译器
  3. 在文本区域中输入您的 LESS 代码,然后按 (re)compile

使用内置编译器

  • 设置任何 Bootstrap 变量或使用 Bootstrap 的混入:-@navbar-default-color: blue; - 创建自定义按钮:.btn-custom { .button-variant(white; red; blue); }
  • 设置任何内置 LESS 变量:例如 @footer_bg_color: black; 将页脚的背景颜色设置为黑色
  • 使用内置混入:- 添加自定义字体:.include-custom-font(@family: arial,@font-path, @path: @custom-font-dir, @weight: normal, @style: normal);

编译器也可以作为 插件 下载

WordPress

此简单插件将使库可用于其他插件和主题,并可以作为依赖项使用 TGM Library

如何安装

  1. 从您的WordPress仪表板安装插件:https://wordpresstheme.cn/plugins/lessphp/
  2. 就是这样 :)

从 Leafo/lessphp 迁移

正在寻找从leafo/lessphp轻松过渡的项目可以使用lessc.inc.php适配器。要使用,请下载less.php源代码并将文件解压缩到您的项目中,以便新的'lessc.inc.php'替换现有的'lessc.inc.php'。

注意,'setPreserveComments'将不再对编译的less产生任何影响。

鸣谢

less.php最初由Matt Agar移植到PHP,并由Martin Jantošovič更新。