Обрабатываем LESS "на лету" с помощью Nginx и Node.js
Сегодня начал использовать twitter-bootstrap и решил процессить less не на клиентской стороне, а средствами сервера, просто по приколу. Сразу же вспомнил про статью на хабре Серверный процессинг LESS файлов «на лету» своими руками и решил реализовать то, что там написано.
Принцип работы заключается в том, что все обращения к файлам "*.less" будут проксироваться через Nginx и преобразовываться на лету (можно и nginx-кеш прикрутить, если надо) в css средствами node.js.
Установка
Для начала нам надо установить nginx и node.js:
sudo apt-get install nginx nodejs
Скачиваем отсюда последнюю версию less.js и устанавливаем:
cd ~ wget -O adw0rd-less.js.tar.gz tar -xzf adw0rd-less.js.tar.gz cd adw0rd-less.js-* # Проверяем less make test
Настройка
Добавим в "/etc/hosts" хост "example.loc":
127.0.0.1 example.loc
Отконфигурируем Nginx
Добавим в "/etc/nginx/nginx.conf" апстрим "lessserv":
upstream lessserv { server localhost:1337; }
Отредакируем ваш server-конфиг для "example.loc" - "/etc/nginx/sites-available/example.conf":
server { listen 80; server_name example.loc; root /path/to/example; location ~* \.less$ { proxy_pass } }
После чего не забываем добавить в sites-enabled и зарелоадить Nginx:
ln -s /etc/nginx/sites-available/example.conf /etc/nginx/sites-enabled/example.conf sudo nginx -s reload
Теперь перейдем к node.js
В файле "bin/lessserv" вы можете указать нужный вам listen_host и listen_port, по умолчанию:
var listen_port = 1337, listen_host = "127.0.0.1";
Запускаем lessserv, который и будет проксировать наши less-файлы:
cd ~/adw0rd-less.js-* node bin/lessserv --path=/path/to/example
Проверяем по ссылке: , если отдается готовый css-файл, то все у вас получилось!
Ествественно, в каталоге "/path/to/example" должен присутствовать распакованный каталог bootstrap.
Далее в html подключать можно так:
<link rel="stylesheet" type="text/css" href="http://example.loc/bootstrap/less/bootstrap.less" />
P.S. Вообщем статья это "толстый Like" статьи с хабра, хотя более подробная в плане настроек, пофикшены инструкции (proxy_pass, вместо proxy_path), а также немного улучшен "less.js" на GitHub'е :)

Комментарии
Я использую https://github.com/studentIvan/Perl-LESS-Watcher
В фоновом режиме рендерит less-файлики, не самое лучшее, но тоже решение
Оу, нашёл вот такой проект: https://github.com/marazmiki/lesscss-python
Так что можно встроить в джангу и отдавать через неё "на лету" css
ох, лишнее это все.
не надо нигде налету их рендерить, это лишняя бесполезная нагрузка + кеш проблемы и тп. гемор короче лишний.
Я стал вообще охуенным и перешел на Compass (SASS/SCSS вместо LESS - еще больше синтаксис). Под себя натсроил совместную работу Compass + Django static folder обычные.
Работаю в сорцах верстки, компилю в папку django static обычную, а дальше уже жанга манагерит готовый ксс.
Компилится все на лету с помощью LiveReload под макось.
Да я вообще не пользуюсь, так как не верстаю уже давно. Мне проще css поправить чем изучать что-то еще
Оставьте свой комментарий