Блог Vaden Pro

Все о самостоятельном создании и продвижении сайтов

Представляем Laravel Elixir

Раздел: 

Написание кода лишь одна из многих задач с которыми должен справляться современный разработчик работая даже над простыми приложениями. Вы хотите сжать изображения, уменьшить CSS и JavaScript файлы, удалить отчеты отладки, запустить юнит-тесты и выполнить множество других рутинных дел. Даже простое отслеживание всех этих вещей для того, чтобы вовремя вспомнить о них и сделать все необходимое является достаточно сложной задачей, особенно с учетом того, что Вы, предположительно, уделяете большую часть своего внимания созданию и поддержанию больших функций приложения.

Laravel Elixir

Разработчики Laravel надеются уменьшить количество времени и хлопот затрачиваемых на подобные мероприятия предоставляя новый API под названием Laravel Elixir. Elixir интегрирован с Gulp, обеспечивая простое решение для компиляции проектов Laravel Less, Sass, CoffeeScript и выполнения прочих подобных задач администрирования. В этом разделе я покажу Вам, как создавать и выполнять некоторые задачи Elixir в связке с Вашим Laravel приложением. Но для начала, поскольку многие читатели скорее всего не знакомы с Gulp, я бы хотел предложить краткое введение, в котором будут инструкции по установке Gulp с его зависимостями.

Представляем Gulp

Gulp — это мощная система с открытым кодом, которую Вы можете использовать для автоматизации всех вышеупомянутых задач и многого другого. Вы можете автоматизировать подобную рутину написанием Gulp задач, и благодаря этому сохранить себе огромное количество времени за счет интеграции одного или нескольких из сотен доступных плагинов Gulp. В этом разделе я покажу Вам как установить и настроить Gulp для дальнейшего использования в Elixir.

Установка Gulp

Поскольку Gulp построен на Node.js, начать следует с установки Node. Не важно какую операционную систему Вы используете, это легко сделать скачав один из установщиков с официального сайта Node.js. Если Вы предпочитаете использовать сборку Node с исходного кода, вы можете скачать исходный код по этой ссылке. Если же Вы пользователь Mac, как и я, Вы можете установить Node через Homebrew. Пользователи Linux также, скорее всего, имеют доступ к Node через их диспетчер пакетов.

После установки Вы можете проверить доступность Node через командную строку путем извлечения номера версии Node:

$ node -v
v0.10.36

Пользователи Node имеют доступ к огромному количеству посторонних библиотек известных как Node Packaged Modules (NPM). Вы можете установить эти модули воспользовавшись утилитой с красноречивым названием npm. Мы будем использовать npm для установки Gulp:

$ npm install -g gulp

После установки Вы сможете выполнить Gulp команду воспользовавшись командной строкой:

$ gulp -v
[14:12:51] CLI version 3.8.10

После установки Gulp пришло время установить Elixir.

Установка Elixir

Приложения на Laravel 5 по умолчанию содержат файл под названием package.json, который находится в корневой директории проекта. Этот файл выглядит примерно как:

{
  "devDependencies": {
    "gulp": "^3.8.8",
    "laravel-elixir": "*"
  }
}

Менеджер пакетов Node npm использует package.json чтобы узнать и установить зависимости Node модулей. Как Вы можете видеть, по умолчанию проекты Laravel требуют два пакета Node: gulp и laravel-elixir. Вы можете установить эти пакеты локально используя менеджер пакетов примерно следующим образом:

$ npm install

После завершения установки, Вы обнаружите новую директорию под названием node_modules, которая была создана в корневой директории проекта, а внутри нее Вы найдете пакеты gulp и laravel-elixir.

Создаем первую задачу с Elixir

Ваш проект Laravel по умолчанию содержит файл gulpfile.js, который определяет Elixir-овскую разновидность Gulp задач. Внутри этого файла Вы обнаружите пример Gulp задачи:

elixir(function(mix) {
    mix.less('app.less');
});

Задача mix.less скомпилирует Less файл под названием app.less. Этот файл располагается в директории resources/assets/less и выглядит примерно следующим образом:

@import "bootstrap/bootstrap";
 
@btn-font-weight: 300;
@font-family-sans-serif: "Roboto", Helvetica, Arial, sans-serif;
 
body, label, .checkbox label {
  font-weight: 300;
}

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

$ gulp
[13:16:18] Using gulpfile ~/Software/dev.todoparrot.com/gulpfile.js
[13:16:18] Starting 'default'
[13:16:18] Starting 'less'
[13:16:19] Finished 'default' after 480 ms
[13:16:20] gulp-notify: [Laravel Elixir]
[13:16:20] Finished 'less' after 1.52 s

Запустив gulp мы скомпилировали app.less, сохранив результаты в файл под названием app.css который располагается в директории Вашего проекта public/css. Естественно, для того, чтобы действительно использовать стили заданные в app.css файле, Вам необходимо добавить ссылку на него в коде Вашего макета:

<link rel="stylesheet" href="/css/app.css">

Имейте ввиду, что по умолчанию Elixir не минимизирует скомпилированный CSS. Однако, вы можете минимизировать его, передав --production опцию в gulp:

$ gulp --production

Компиляция JavaScript

Также Вы можете желать управлять Вашими JavaScript ресурсами. К примеру, если Вы используете CoffeeScript , Вы расположите свои файлы в директории resources/assets/coffee (которую перед этим необходимо будет создать). Вот простой код CoffeeScript, который будет отображаться в одном из тех раздражающих окон с предупреждениями в браузере:

alert “Hi I am annoying”

Купить сигареты дешево в москве еще по теме. срочная доставка лекарств на 24 часа. Скупка фарфора, хрусталя и других предметов эпохи СССР и Царской России. Продать сервиз дорого можно у нас. Оценка по фото, деньги выплачиваем наличными и сразу. Выезд эксперта. продать сервиз из тонкого фарфора.

Сохраняем этот код в resources/assets/coffee/test.coffee. Далее изменяем наш gulpfile.js файл следующим образом:

elixir(function(mix) {
    mix.less('app.less');
    mix.coffee();
});

Кстати, вы можете также соединять команды следующим образом:

elixir(function(mix) {
    mix.less('app.less').coffee();
});

Сохраняем изменения и запускаем gulp снова:

$ gulp
[14:40:25] Using gulpfile ~/Software/dev.todoparrot.com/gulpfile.js
[14:40:25] Starting 'default'
[14:40:25] Starting 'less'
[14:40:26] Finished 'default' after 478 ms
[14:40:27] gulp-notify: [Laravel Elixir]
[14:40:27] Finished 'less' after 1.88 s
[14:40:27] Starting 'coffee'
[14:40:27] gulp-notify: [Laravel Elixir]
[14:40:27] Finished 'coffee' after 236 ms

Директория с названием js была создана внутри public. В этой директории Вы найдете файл test.js, который содержит следующий JS код:

function() {
alert("Hello world");
}).call(this);
}

Наблюдая за изменениями

Поскольку Вы скорее всего будете регулярно вносить изменения в CSS и JavaScript и захотите увидеть результаты в Вашем браузере, рассмотрите возможность использования Elixir-овской команды watch для автоматического выполнения gulpfile.js после каждого внесения изменений:

$ gulp watch

Прочие задачи Elixir

Компиляция Less и CoffeeScript это лишь две из многих функций Elixir, которые Вы можете начать использовать прямо сейчас. Узнать больше можно ознакомившись с документацией Elixir.

Хоть сейчас по-прежнему ведется очень много работы над Elixir, да и документация по нему остается достаточно небольшой, этот инструмент уже сейчас заключает в себе значительный потенциал.

Оставайтесь с нами и в будущем этот раздел будет значительно расширен и дополнен примерами.

Перевод статьи W. Jason Gilmore Introducing Laravel 5 Elixir