自动编译引用LESS文件与PHP CSS(Compile a referenced LESS fil

2019-06-18 01:03发布

我想会发生以下情况:

  1. 有过程的自动化服务器端。

  2. 只要能够引用LESS文件我会在我的代码CSS文件。

  3. 用户返回精缩CSS,而不是LESS文件 - 高速缓存,所以编译器并不需要运行,除非LESS文件已被更新。

  4. 对于这个与我的网域内的任何地方引用的任何文件LESS工作。

我发现Lessphp ,但文档不是很清楚,也没有说明如何动态地得到任何LESS文件给它。 我想我会张贴我是如何得到这一切工作,我还没有看到过如何使用PHP来实现这一目标运行。

Answer 1:

这是假设LESSPHP v0.3.8 +不确定有关早期版本,但你会得到它是如何工作的,如果它不开箱的要点。

<link rel="stylesheet" type="text/css" href="styles/main.less" />

如果您正在使用less.js编译客户端,请确保您更改rel="stylesheet/less"rel="stylesheet"

1)抓斗Lessphp我放置在这些文件/www/compilers/lessphp/这个演示的上下文

2)做一个PHP脚本,我们可以扔掉LESS文件。 这将涉及缓存,编译到CSS和返回CSS作为响应。 我已经把这个文件/www/compilers/并把它称为lessphp.php

大部分代码是在Lessphp现场,除了有它的错误,我已经添加在最后的响应。

<?php
require "lessphp/lessc.inc.php";
$file = $_GET["file"];
function autoCompileLess($inputFile, $outputFile) {
    // load the cache
    $cacheFile = $inputFile.".cache";
    if (file_exists($cacheFile)) {
        $cache = unserialize(file_get_contents($cacheFile));
    } else {
        $cache = $inputFile;
    }
    $less = new lessc;
    $less->setFormatter("compressed");
    $newCache = $less->cachedCompile($cache);
    if (!is_array($cache) || $newCache["updated"] > $cache["updated"]) {
        file_put_contents($cacheFile, serialize($newCache));
        file_put_contents($outputFile, $newCache['compiled']);
    }
}
autoCompileLess('../' . $file, '../' . $file . '.css');
header('Content-type: text/css');
readfile('../' . $file . '.css');
?>

这将编译LESS文件(例如, styles/main.less )的缓存文件和CSS文件(例如, styles/main.less.css )。

3)添加mod_rewrite规则,使任何减档请求重定向到我们的编译器用户,给它的路径。 这是摆在根.htaccess文件。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^([^.]*\.less)$ compilers/lessphp.php?file=$1 [R,QSA,L]
</ifModule>

如果您在使用WordPress,此规则将需要来之后-即使WordPress是一个子目录,它似乎覆盖这些规则,LESS编译不会为它存在以下(目录明智)的WordPress的引用文件发生.htaccess规则。

4)你更少的代码应该相对于编译器的位置相对引用。 此外,如果是空的属性,如Lessphp编译器将失败。 background-color: ;


如果一切运作良好,应会出现以下情况:

  1. 直接浏览你的文件LESS http://domain.com/styles/main.less

  2. 被自动重定向到http://domain.com/compilers/lessphp?file=styles/main.less

  3. 呈现缩小的带有CSS

  4. main.less.cssmain.less.cache应在同一目录现在已成为你的LESS文件

  5. 上次修改的日期不应该改变,除非你更新你的LESS文件



文章来源: Compile a referenced LESS file into CSS with PHP automatically