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