RiaBuilder — сжимаем js, css, less, html средствами PHP

Доброго времени суток, <%- username %>! Наконец-то нашлось время для оформления и публикации в open source своих решений, с одним из которых хочу поделиться с хабросообществом.

RiaBuilder — PHP библиотека, позволяющая на основе package.json файлов сжимать JavaScript, CSS, LESS и HTML код в один файл. Я стремился сделать библиотеку максимально простой в использовании и с достаточно богатым API.
Для работы библиотека использует только PHP, что даёт возможность использовать её без установки дополнительного ПО для компрессоров.

Что умеет:


  • Поддержка форматов JavaScript, CSS, LESS, HTML;
  • Подгрузка вложенных модулей;
  • Подгрузка файлов по маске (*.js);
  • Компиляция LESS в CSS средствами PHP;
  • Сжатие (минификация) JavaScript, CSS, HTML кода средствами PHP;
  • Подключение файлов в зависимости от названия и версии браузера;
  • Создание билда как из командной строки, так и динамически из php;
  • Добавление обёртки в виде функций для JavaScript кода;
  • Основной функционал покрыт юнит тестами.

Пример использования


Допустим у нас есть небольшое веб-приложение из двух файлов:
testapp/style_ie6.less
@color: red;
body {
	color: @color;
}

и testapp/main.js
function a(message) {
	alert(message);
}

Создаём для них файл package.json:
{
	"include": [
		{
			"type": "less",
			"files": [
				"styles_ie6.less"
			],
			"browser": "ie <=6"
		},
		"*.js"
	]
}

Делаем билд нашего приложения:
/var/www/riabuilder/run -c testapp

В результате получим файл testapp_min.js со следующим содержанием:
... // Javascript часть библиотеки RIABuilder
if (RIABuilder.matchBrowser("ie <9")){RIABuilder.appendStyle("body {color: red;}");} function a(m) {alert(m);}

Библиотека скорее всего подойдёт для малых и средних веб-приложений, так как не имеет анализатора зависимостей. Я использую её для нескольких не малых проектов, а значит в будущем в ней как минимум будут исправляться найденные ошибки.
Более подробное описание и примеры использования можно найти на GitHub.
Метки:
php, javascript, builder, amd, open source, loader