/frontend

frontend shape

Primary LanguageJavaScript

  1. node load
  2. npm i
  3. grunt build или
  4. npm run build

Работа проверена на версиях Node 4.3.2LTS и ниже, на версиях выше могут быть непредвиденные ошибки

Команды

Описание Команды к консоли
Скачивание всех ресурсов темы. Необходим файл с сервера load.js node load
Компиляция статики, выполнение всех заданий watch один раз. довольно бесполезно grunt scompile
Компилирует js grunt js
Минимизация всего и вся grunt minify
Создание изображений и минификация grunt imagecreate
Создание спрайтов и минификация grunt spritecreate
Билд скрипт grunt build
Пересобрать всю муру grunt rebuild
Билд скрипт для многоядерных (4 ядра), с паралелзьмом grunt buildcon
Тест сайта на скорость и оптимальность grunt speedtest
Отправка темы на сервер grunt deploy
Запуск watch в обычном режиме, для мощных машин grunt watch --mode=compile
Запуск watch в режиме экономии task'ов. В файле watch оставть только,php css js задания, остальное закоментить grunt watch --mode=lightcompile
Установка новых bower'ов, где {package} имя пакета grunt shell:bi:{package}
Удаление пакетов bower'ов, где {package} имя пакета grunt shell:bu:{package}

А для всего остального есть MasterCard

Режимы

Описание Переменная Значение
Режим обычной работы, тяжелый, загружает все задания. Используется для билда или вызовов статичных заданий. Режим по умолчанию --mode dev
Режим watch компилирования. Загружает только задания необходимые для компиляции sources --mode compile
Режим деплоя. Экономит время при инициализации, в случае если нужно сделать только deploy --mode deploy
Режим для слабых машин, значительно разгружает режим компилирования. Компилируется только css, js, php. Режим по умолчанию выключен --light true/false
Режим колхозной непрерывной интеграции. Кидает измененные скомпиленые файлы прямиком на сервер. Режим по умолчанию выключен --live true/false

Пример смены режима на облегченный с интеграцией grunt watch --mode=compile --light=true --live=true

#Как сделать пакеты нормальными или если что-то пошло не так или операция Н#

##NodeLoad##

Обязательно наличие установленного глобально пакета ftp (npm i -g ftp)

##Bourbone##

При компиле в консоль сыпят сообщения что "такой то класс будет удален из следующей версии", все эти сообщение, сюрприз, увеличивают время компиляции. Советую отключить это дерьмо.

bower/bourbone/app/assets/stylesheets/_bourbone.scss

Закоментить последнюю строку

@import "bourbon-deprecated-upcoming";

##Page speed##

Чтобы получать инфу об оптимизации переписать project.domain в файле package.json. И не забыть установить глобально psi

npm install --g psi

##Ftp_push##

Обязательно надо настроить параметры проекта в package.json (массив project). В случае если деплой происходит не на нашем сервере то необходимо заменить путь, в файле Gruntfile.js

##Perfbudget##

Чтобы получать инфу об оптимизации переписать domain в файле package.json.

##Сoncurrent##

В настройках указать число ядер. Ускоряет. Не использовать тем у кого меньше 4 ядер.

##Bower через grunt##

Напоминаю, что этот плагин и команды устанавливают пакеты в папку web, пакеты для developa ставятся по классической схеме через bower

##Depricatнутые##

###JadePhp### since 2.5.0 - чтобы не использовать экранирование просто используем окроткий вывод через !=

Чтобы избавится от htmlspecialchars при использовании оператора = коментим в файле

node_modules/grunt-jade-php/node_modules/jade-php/lib/compiler.js

с 178 по 180 и с 210 до 212 строки

###Favicons###

since 2.5.0 - пакет берется напрямую из репозитоя автора, где он все соблагоизволил поравить.

Это дерьмо на винде не будет работать без imagistic (или как то так, так что его надо установить) и с 0.4.0 версией sync-exec. Второе исправить легко, идем в файла

node_modules/grunt-favicons/package.json

И правим версию

"sync-exec": "^0.4.0" -> "sync-exec": "^0.6.0"

после чего в этой папке запускаем npm install. Теперь grunt favicons заработает.

#Что есть в сборке#

  • NodeLoad - скрипт настроеный на скачку всего необходимого внутри темы, для развертки
  • Bower task для установки bower-пакетов
  • Shell для работы с консолью, и консольными командами
  • Haml для компиляции Haml в Php
  • SASS для компиляции SASS в CSS
  • Clean для удаления файлов
  • Combine-mq для сборки медиазапросов
  • Cssmin для минификации CSS
  • Favicons для создания favicon'ок
  • FileCreator для создания файлов
  • FtpPush для деплоя
  • FontLoader для загрузки шрифтов с ftp
  • Webpack для Webpack сборки JS
  • Uglify для минификации JS файлов
  • Retinafy для создания ретина-изображений
  • Spritesmith для создания спрайтов и стилей для них
  • Imagemin для минификации IMG и PNG
  • Watch для livereload
  • Newer для отбрасывания из выборок файлов, которые не изменились
  • Perfbudget тестируем скорость, альтернатива pagespeed, но круче
  • Copy для копирования файлов
  • LoadConfig для разбиения настроек тасков по файлам
  • Time время выполнения заданий
  • Svgmin для минификации векторной графики

###Alternative

  • jadePhp для компиляции Jade в Php
  • Less для компиляции LESS в CSS

###Что есть, но пока что не используется###

  • Сoncurrent Время билда должно быть весьма велико чтобы что то параллелить, сейчас такой надобности нету, наоборот рпоигрыш наблюдается. На многоядерных можно пользовать.

###Depricated### Либо не используется, либо пока не найдено приминения

  • Coffee компилируется Webpack'ом
  • Compass старый компилятор и фрейм Compass для SASS. Исключен из за высокого времени на компиляцию
  • Notify подымает сообщения, с помощью Growl'a. Пищало, лишнее время на загрузку таска. Не нужно, если держать окно консоли поверх остальных
  • Periodic периодический запуск заданий, оказалось не то что надо, так как занимается лишь повторением задач, в случае если они не были запущены ни разу за указанный период. Практического применения не найдено
  • Pagespeed проходит проверку в Google insight pageSpeed. Пока не работает и зависает, пока что не применимо.
  • Concat конкатенирует файлы, без надобности, теперь.
  • HTML5 Manifest для кеширования и оффлайн страниц, пока таких задач не возникало