Как автоматически скомпилировать LESS в CSS на сервере?

мой друг дизайнер компилировал свой файл вручную и загружал его с помощью кода (удаленный сайт), тратя много драгоценного времени. Он спросил меня:--1-->

можно ли автоматически обнаружить изменение файла на сервере Linux и скомпилировать его без задержки?

3 ответов


Я сделал скрипт и публикую подробности:

  • простота в использовании для дизайнеров
  • выполняет меньше компилятора сразу после сохранения файла, не потребляя ресурсы сервера
  • любой редактор, способный к удаленному редактированию, будет работать с этим решением-Code, Sublime Text, Textmate

во-первых, вам нужно установить "npm" на сервере, введя это в консоль:

sudo apt-get install npm inotify-tools
sudo npm install -g less
sudo nano /usr/local/bin/lesscwatch

вставьте следующий файл:

#!/bin/bash
# Detect changes in .less file and automatically compile into .css
[ "" ] || { echo "Specify both .less and .css files"; exit 1; }
inotifywait . -m -e close_write | while read x op f; do.
    if [ "$f" == "" ]; then.
        lessc $f >  && echo "`date`: COMPILED";.
    fi
done

сохранить, выйти, затем выполнить:

sudo chmod +x /usr/local/bin/lesscwatch

вы все сделали. В следующий раз, когда вам нужно будет работать с вашими меньшими файлами, вам нужно будет открыть терминал (у кода есть встроенный), перейти в папку вашего файла (используя cd) и выполнить это:

lesscwatch main.less main.css

Он выведет информацию об успешных компиляциях или ошибках. Наслаждаться.


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

/ usr / local / bin / lesscwatch:

#!/bin/bash                                                                     
# Detect changes in .less file and automatically compile into .css                 
[ "" ] || { echo "Specify both .less and .css files"; exit 1; }                  
inotifywait . -m -e close_write | while read x op f; do                            
    if [[ "$f" == *".less" ]]; then                                                
        echo "Change detected. Recompiling...";                                    
        lessc  >  && echo "`date`: COMPILED";                                                                                                                           
    fi                                                                             
done 

Это более близко имитирует поведение Less.приложение для Mac, к которому я привык.

при разработке с меньшим, я обычно имейте кучу файлов в каталоге / style моего проекта и скомпилируйте все в один.css-файл с использованием переопределений.

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

базы.меньше:

@import "overrides.less";
@import "variables.less";

body {
   ...
}

использование такое же, как

lesscwatch base.less base.css

Я хотел бы сценарий bash, но у меня были некоторые проблемы с его использованием с sublime wthin ubuntu 12.10 . что ж, сценарии сделали то же самое Ian_Marcinkowski тут, но я уверен, что он продолжает работать после первого события и контролирует все файлы (sublime text someway, используйте файл tmp и не меняйте исходный - !?!).

#!/bin/bash
# Detect changes in .less file and automatically compile into .css
[ "" ] || { echo "Specify both .less and .css files"; exit 1; }
inotifywait -m -e close_write . | while read x op f; do
    echo $f
    echo "Change detected. Recompiling...";
    lessc  >  && echo "`date`: COMPILED";
done

вызов скрипта как :

./monitor.sh  </path/to/dir>  <main.less> <main.css>