Pipe 项目技术文档
1. 安装指南
首先,您需要获取 composer。如果尚未安装,可以通过以下命令进行安装:
wget http://getcomposer.org/composer.phar
然后,在项目的根目录下创建一个 composer.json 文件,并添加以下内容:
{
"require": {
"chh/pipe": "*"
}
}
接下来,执行以下命令来安装 Pipe:
php composer.phar install
2. 项目的使用说明
环境配置
首先,需要创建一个 Pipe\Environment 实例。环境用于维护加载路径,检索资产以及将处理器/引擎映射到资产上。
<?php
use Pipe\Environment;
$env = new Environment;
$env->appendPath("assets");
$env->appendPath("vendor_assets");
资产可以通过访问环境实例的索引或调用 find 方法来检索。
<?php
$asset = $env["js/application.js"];
// 等同于:
$asset = $env->find("js/application.js");
要获取资产的已处理内容,请使用 getBody 方法。
<?php
echo $asset->getBody();
资产输出到文件
要将资产输出到文件,请使用 write 方法。该方法接受以下选项:
dir (string): 文件的前缀目录。资产的哈希值会自动包含在生成的文件名中。include_digest (bool): 是否在文件名中包含 SHA1 哈希值。compress (bool): 是否使用 GZIP 压缩内容,并以.gz扩展名保存。
启用压缩
可以通过设置 js_compressor 和 css_compressor 配置键或在环境实例上调用 setJsCompressor 或 setCssCompressor 来启用压缩。
支持的 JavaScript 压缩器:
uglify_js: 基于 NodeJS 的 Uglify JS 压缩器。通过npm -g install uglify-js安装。yuglify_js: 基于 Uglify JS 并行为类似于 YUI 压缩器。通过npm -g install yuglify安装。
支持的 CSS 压缩器:
yuglify_css: 使用 Yuglify 压缩器的能力来压缩 CSS,依赖于 CSSmin。需要yuglifyNPM 包。
示例:
<?php
$env = new Environment;
$env->appendPath("assets/stylesheets");
$env->appendPath("assets/vendor/stylesheets");
$env->appendPath("assets/javascripts");
$env->appendPath("assets/vendor/javascripts");
$env->setJsCompressor('yuglify_js');
$env->setCssCompressor('yuglify_css');
// 压缩器是捆绑处理器。捆绑处理器仅对捆绑资产运行。
$asset = $env->find('application.js', ['bundled' => true]);
echo $asset->getBody();
3. 项目API使用文档
指令
每个 application/javascript 或 text/css 类型的文件都会被 DirectiveProcessor 处理。DirectiveProcessor 会解析文件开头的特殊注释,这些注释以等号 (=) 开头。
/* CSS
*= require foo.css
*= depend_on bar.css
*/
# CoffeeScript
#= require foo.coffee
// Javascript
//= require foo.js
每个指令的参数都会按照壳脚本 (Bourne Shell) 的规则进行分割。这意味着如果参数中包含空格,需要使用单引号或双引号进行引用。
require
用法:
require <path>
require 指令接受一个资产路径作为参数,处理这个资产,并将依赖的资产内容放在当前资产内容之前。
路径也可以以 ./ 开头,这会跳过路径解析的加载路径,直接在当前资产的同一路径下查找文件。
depend_on
用法:
depend_on <path>
定义 path 是当前资产的依赖,但不会处理任何内容。以这种方式定义的资产在计算最后修改时间时会被考虑,但内容不会被前置。
require_tree
用法:
require_tree <path>
要求指定路径下的所有文件。
例如,如果您有一个包含所有单独小部件和一个小部件基原型目录,可以通过 require_tree 小部件目录。这样每个开发人员都可以简单地将文件放入小部件目录中,而无需维护一个庞大的单独资产列表。
// index.js
//= require ./widget_base
//= require_tree ./widgets
引擎
引擎用于在资产被输出之前处理资产。每个引擎都映射到一个或多个文件扩展名(例如,CoffeeScript 到 .coffee)。每个资产可以由一个或多个引擎处理。使用哪个引擎以及它们的顺序由资产的文件扩展名决定。
例如,要将资产首先通过 PHP 引擎处理,然后通过 LESS 编译器处理,可以给资产加上 .less.php 后缀。
以下是默认提供的引擎及其映射到的文件扩展名列表:
| 引擎 | 扩展名 | 要求 |
|---|---|---|
| CoffeeScript | .coffee | coffee — 通过 npm install -g coffee-script 安装 |
| LESS | .less | lessc — 通过 npm install -g less 安装 |
| PHP | .php, .phtml | |
| Mustache | .mustache | 添加 phly/mustache 包 |
| Markdown | .markdown, .md | 添加 dflydev/markdown 包 |
| Twig | .twig | 添加 twig/twig 包 |
| TypeScript | .ts | tsc — 通过 npm install -g typescript 安装 |
在内部,Pipe 引擎是 meta-template 模板。关于构建自己的引擎的更多信息,请查看其 README。
要将引擎类添加到 Pipe,请使用环境的 registerEngine 方法,该方法接受引擎的类名作为第一个参数和扩展名数组作为第二个参数。
4. 项目安装方式
如前所述,使用 composer 进行安装:
php composer.phar install
确保在 composer.json 文件中添加了 Pipe 的依赖。
{
"require": {
"chh/pipe": "*"
}
}
此外,如果需要动态服务资产,还需要安装 symfony/http-foundation:
{
"require": {
"chh/pipe": "*@dev",
"symfony/http-foundation": "*"
}
}
AutoGLM-Phone-9BAutoGLM-Phone-9B是基于AutoGLM构建的移动智能助手框架,依托多模态感知理解手机屏幕并执行自动化操作。Jinja00
Kimi-K2-ThinkingKimi K2 Thinking 是最新、性能最强的开源思维模型。从 Kimi K2 开始,我们将其打造为能够逐步推理并动态调用工具的思维智能体。通过显著提升多步推理深度,并在 200–300 次连续调用中保持稳定的工具使用能力,它在 Humanity's Last Exam (HLE)、BrowseComp 等基准测试中树立了新的技术标杆。同时,K2 Thinking 是原生 INT4 量化模型,具备 256k 上下文窗口,实现了推理延迟和 GPU 内存占用的无损降低。Python00
GLM-4.6V-FP8GLM-4.6V-FP8是GLM-V系列开源模型,支持128K上下文窗口,融合原生多模态函数调用能力,实现从视觉感知到执行的闭环。具备文档理解、图文生成、前端重构等功能,适用于云集群与本地部署,在同类参数规模中视觉理解性能领先。Jinja00
HunyuanOCRHunyuanOCR 是基于混元原生多模态架构打造的领先端到端 OCR 专家级视觉语言模型。它采用仅 10 亿参数的轻量化设计,在业界多项基准测试中取得了当前最佳性能。该模型不仅精通复杂多语言文档解析,还在文本检测与识别、开放域信息抽取、视频字幕提取及图片翻译等实际应用场景中表现卓越。00
GLM-ASR-Nano-2512GLM-ASR-Nano-2512 是一款稳健的开源语音识别模型,参数规模为 15 亿。该模型专为应对真实场景的复杂性而设计,在保持紧凑体量的同时,多项基准测试表现优于 OpenAI Whisper V3。Python00
GLM-TTSGLM-TTS 是一款基于大语言模型的高质量文本转语音(TTS)合成系统,支持零样本语音克隆和流式推理。该系统采用两阶段架构,结合了用于语音 token 生成的大语言模型(LLM)和用于波形合成的流匹配(Flow Matching)模型。 通过引入多奖励强化学习框架,GLM-TTS 显著提升了合成语音的表现力,相比传统 TTS 系统实现了更自然的情感控制。Python00
Spark-Formalizer-X1-7BSpark-Formalizer 是由科大讯飞团队开发的专用大型语言模型,专注于数学自动形式化任务。该模型擅长将自然语言数学问题转化为精确的 Lean4 形式化语句,在形式化语句生成方面达到了业界领先水平。Python00