YUICompressor или подобное в PHP? - PullRequest
8 голосов
/ 10 июня 2009

Я использую yuicompressor.jar на своем тестовом сервере для оперативной минимизации измененных файлов JavaScript. Теперь, когда я развернул веб-сайт на общедоступном сервере, я заметил, что политики сервера запрещают использование exec () или его эквивалентов, поэтому для меня больше не требуется выполнение Java.

Существует ли приличный компрессор JS на лету, реализованный в PHP? Единственной вещью, похожей на эту, которую я смог найти, был Minify, но это скорее полноценное решение для сжатия с кешем и всем остальным. Я хочу, чтобы файлы были отдельными, и чтобы минимизированные файлы следовали моим собственным соглашениям об именах, поэтому Minify слишком сложен для этой цели.

Инструмент, такой как yuicompressor, должен иметь возможность принимать либо имя файла, либо JavaScript в качестве входных данных и должен либо записывать в файл, либо выводить сжатый JavaScript.

РЕДАКТИРОВАТЬ: Чтобы уточнить, я ищу что-то, что не нужно использовать в качестве автономного (то есть это может быть вызвано из функции, а не сниффинг моих переменных GET). Если бы я просто хотел компрессор, Minify, очевидно, был бы хорошим выбором.

EDIT2: многое изменилось за пять лет, с тех пор как я задал этот вопрос. Сегодня я настоятельно рекомендую отделить рабочий процесс внешнего интерфейса от кода сервера. Существует множество хороших инструментов для разработки JS, и, кроме самых тривиальных улучшений jQuery, лучше иметь полный рабочий процесс с автоматическими пакетами, тестированием и компоновкой и просто развертывать минимизированные пакеты, а не сырые файлы. *

Ответы [ 3 ]

6 голосов
/ 10 июня 2009

Да, есть, это называется minify .

Единственное, о чем нужно беспокоиться на пути сложности, это настроить группу , и в этом нет ничего особенного. Отредактируйте файл groupsConfig.php, если вы хотите использовать несколько JS / CSS в одном выражении <script> или <link>:

return array(
     'js-common' => array('//js/jquery/jquery-1.3.2.min.js', '//js/common.js', '//js/visuals.js',
'//js/jquery/facebox.js'),
     'css-common' => array('//css/main.css', '//css/layout.css','//css/facebox.css')
);

Чтобы включить вышеуказанную группу 'js-common', сделайте следующее:

<script type="text/javascript" src="/min/g=js-common"></script>
3 голосов
/ 23 ноября 2011

(я знаю, что искал ту же самую вещь, не зная, как напрямую обращаться с файлом jar, используя php - вот как я попал сюда, поэтому я делюсь тем, что нашел)

Minify - огромная библиотека с множеством функций. Однако минифицирующая часть - очень маленький класс: http://code.google.com/p/minify/source/browse/trunk/min/lib/Minify/YUICompressor.php

и очень очень прост в использовании:

//set the path to the jar file
Minify_YUIcompressor::$jarFile=_ROOT.'libs/java/yuicompressor.jar';
//set the path to a writable temp folder
Minify_YUIcompressor::$tempDir=_ROOT.'temp/';

//minify
$yourcssminified=Minify_YUIcompressor::minifyCss($yourcssstringnotminified,$youroptions)

тот же процесс для js, если вам нужно больше функций, просто выберите из библиотеки и прочитайте исходный код, чтобы увидеть, как вы можете сделать прямой вызов из вашего приложения.

Я плохо прочитал вопрос, так как minify основан на использовании jar-файлов, оператору все равно не удастся использовать его с его конфигурацией сервера

Minify также включает другие методы минимизации, кроме yui, например:

http://code.google.com/p/minify/source/browse/trunk/min/lib/JSMinPlus.php?r=443&spec=svn468

0 голосов
/ 29 ноября 2009

Попробуйте Лисса :

Lissa - это универсальная утилита загрузки CSS и JavaScript. Lissa - это расширение YUI PHP Loader, предназначенное для решения одного из текущих ограничений загрузчика; комбинированная загрузка. YUI PHP Loader поставляется с комбинированным загрузчиком, который способен уменьшать HTTP-запросы и повышать производительность, выводя все требования JavaScript и / или CSS YUI в виде одного запроса для каждого типа ресурса. Это означает, что даже если вам нужно 8 компонентов YUI, которые в конечном итоге сводятся к 13 файлам, вы все равно сделаете только 2 HTTP-запроса; один для CSS и другой для JavaScript. Это здорово, но как насчет пользовательских не-YUI ресурсов. YUI PHP Loader будет загружать их, но загружает их как отдельные включения и, таким образом, они упускают преимущества комбинированной службы, и количество HTTP-запросов для страницы увеличивается. Lissa обходит это ограничение, используя PHP-загрузчик YUI для обработки загрузки и сортировки зависимостей и пар пользовательских ресурсов и / или пользовательских ресурсов, которые работают с Minify.

...