Автоматизированный шаблон для быстрого старта front-end разработки
Каждый раз, начиная новый проект, я ставил gulp, необходимые модули, настраивал, организовывал файловую структуру проекта, создавал необходимые первоначальные файлы. Я часто обращался к законченным проектам, чтобы взять те или иные файлы и настройки.
На это уходило много времени и я решил, что пора собрать один шаблон, который позволит быстро начать работу над проектом.
Я знаю про существование таких инструментов как Yo и я знаю точно, что мне нужно, поэтому проще и быстрее было собрать свой шаблон.
Шаблон я собирал с учетом своих потребностей и опыта, который накапливался на протяжении многих проектов. Поэтому, я не обещаю, что он может быть полезен вам в первоначальном виде, но его можно использовать как наглядный пример и дорабатывать под свои нужды.
Я считаю, что любая рутина должна быть автоматизирована. Раньше приходилось собирать вручную спрайты, минифицировать файлы, но сейчас появилось большое количество инструментов, которые помогают автоматизировать все это и сэкономить время и нервы разработчика.
В качестве сборщика проекта я выбрал gulp.
До этого я имел опыт работы с grunt, но мне не нравилось то, как медленно он компилировал файлы. Мне важно чтобы изменения в файлах происходили моментально.
А Gulp после grunt-a поражает своей скоростью.
- Компиляция stylus
- Компиляция CoffeeScript
- Компиляция Jade-шаблонов
- Сборка спрайтов и генерация стиля для них. Я писал статью о том, как это все работает.
- Добавление вендорных префиксов к свойствам
- Минификация css и js
- Оптимизация картинок
Первый уровень проекта — папки builder, src и built.
builder — папка в которой лежит gulpfile с тасками для gulp, где будут лежать node-модули и откуда буду запускаться все команды в консоли.
В папке src лежат все исходные файлы проекта, а папка built создается и изменяется автоматически при выполнении команд gulp-а.
Содержимое папки src
assetsstyles— стили проектаimages— картинки проекта, включаяcontentпапку для картинок в контентеscripts— скрипты делятся на 2 типа: сторонние библиотеки (vendor) и то, что было написано для этого проекта (local)
templatespages— шаблоны страницblocks— блоки из которых будут собираться страницы.
В gulpfile.coffee описаны таски, которые выполняют те или иные действия. Таски можно вызывать по отдельности и группами. Вызов группами — самый частый юзкейс.
Все gulp-плагины загружаются автоматически из package.json с помощью плагина gulp-load-plugins. Это позволяет уменьшить объем gulpfile.coffee.
Gulp в процессе работы берет файл из 1 папки, выполняет с ним необходимые операции и сохраняет в другой папке. Для удобства, все пути к файлам я вынес в переменные и храню их в файле config.yml.
sprite— генерация спрайта на основе картинок, который лежат в папкеconfig.paths.src.sprites.images.allcoffee— компиляция.сoffeeиз папкиlocalvendor— перенос скриптов вbuiltпапкуstylus— компиляция.stylimages— перенос картинок вbuiltпапкуjade— компиляция.jade-шаблоновautoprefixer— добавление вендорных префиксов (настройки по-умолчанию)scripts:min— минификация скриптовstyles:min— минификация стилейimages:min— оптимизация картинокwatch— отслеживание изменений в файлах и запуск необходимого таска
default- компилирует шаблоны, скрипты, стили, собирает спрайты. Но делает это всего 1 раз;dev— Включает в себя самdefaultи задачуwatch, которая начинает отслеживать изменения в файлах и запускает необходимые таски по отдельности, в зависимости от файла, который изменился;minify— сжимает файлы и оптимизирует картинки, которые были созданы после работыdefault;prod— таск который запускается на сервере или перед заливкой на сервер. Он выполняет группуdefaultи после этого запускаетminify;
- node.js
- gulp
- coffee-script — для запуска gulpfile.coffee. При желании можно перевести
.coffeeв.js
Если у вас не установлен node.js, скачайте и установите.
Вместе с node.js у вас установится пакетный менеджер npm.
Теперь установите coffee-script и gulp, введя в консоли команду npm i -g coffee-script gulp (понадобятся права администратора).
После этих шагов, можно приступать к установке зависимостей в самом проекте.
Скачайте и распакуйте архив с шаблоном, в консоли откройте папку builder и введите npm i. Пойдет процесс скачивания и установки всех перечисленных в package.json модулей. После завершения установки, можно смело напечатать gulp в консоли и отработает группа задач default
При запуске gulp система может выдат ошибку о том, что не найден модуль coffee-script/register. Решение — установить переменную NODE_PATH
Ссылки на решения
- http://stackoverflow.com/questions/9587665/nodejs-cannot-find-installed-module-on-windows
- http://stackoverflow.com/questions/12594541/npm-global-install-cannot-find-module
- Подключить миксины для stylus (http://kouto-swiss.io/, nib)
- конкатенация js
- base64
- JSHint
- bower
- https://github.com/jackfranklin/gulp-load-plugins
- https://github.com/sindresorhus/gulp-changed
- https://www.npmjs.org/package/gulp-accord
- https://www.npmjs.org/package/gulp-task-listing / https://www.npmjs.org/package/gulp-help
- Подготовить grunt-версию
- livereload?