CoffeeScript & node.js dev-сервер

CoffeeScript - язык программирования, компилируемый в javascript. Используя CoffeeScript для разработки на node.js мы можем избавиться от некоторых, не очень приятных, особенностей javascript. node.js and coffee-script Сегодня мы рассмотрим, как автоматизировать процесс компиляции CoffeeScript в javascript. Также настроим автоматическую перезагрузку приложения, после каждой новой компиляции.

Устанавливаем пакеты

Для выполнения нашей цели необходимо установить несколько пакетов:

npm install coffee-script forever

Мы установили следующие пакеты

Файловая структура

Всё приложение (файлы с расширением *.coffee) располагаем в отдельной поддиректории. Для скомпилированных файлов создаём дополнительную поддиректорию в корне проекта. Также важно чтобы временные файлы, файлы загруженные пользователями и т.д. находились в отдельной от приложения поддиректории. Т.е. получаем примерно следующую файловую структуру:

$ ls -1
app
compiled
node_modules
package.json
README.md
uploads

Где,

Компилируем CoffeeScript

Для того чтобы компилировать CoffeeScript в javascript необходимо использовать утилиту coffee. Она принимает ряд параметров, можете ознакомится с ней подробнее прочитав справочную информацию coffee --help.

Утилита coffee позволяет следить за файловой системой и автоматически перекомпилировать изменённые файлы CoffeeScript. Для этого необходимо вызвать её со следующими параметрами:

 coffee -w -o compiled/ app/

Где, флаг -w включает режим отслеживания, -o задаёт директорию, в которую сохраняются скомпилированные файлы, а последний параметр определяет целевую директорию приложения.

Настраиваем автоматический перезапуск приложения

Для того чтобы автоматически перезапускать приложения, после перекомпиляции, воспользуемся утилитой forever.

forever -w --watchDirectory compiled/ --sourceDiDir compiled/ compiled/app.js

Рассмотрим параметры:

Теперь после каждого изменения в *.coffee файлах приложения будет автоматически запускаться перекомпиляция изменённых файлов. После этого изменения в скомпилированных файлах будет замечено утилитой forever, что приведет к перезапуску приложения.