Pull to refresh

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.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.
Change theme settings