- Install deps
npm i - Run
npm run prepare - all tasks should be started via npm. e.g.
npm run gulp,npm run gulp dev. It looks a bit ugly, but this is the only way to work with 4 ver of gulp until it'll be finally released.
- pug -> html
- sass -> postcss -> css
- browsersync
- autoprefixer
- es2015 compilation
- watch 'n compile
- generator for styles and templates
Boilerplate for UI development
- [What is this?](#What is this)
- Installation
- Что в мешке?
- Как все работает?
- TODO
This is a boilerplate for reducing amount of routine tasks in UI development. The boilerplate is built based on my experience and needs, so I don't guarantee it will be useful for you as is. You can use it as an example and modify it or build your own.
- Download and install node.js
- Clone this repository and remove
.gitin order to connect your own git repository later - Install all dependencies
npm i - Run
npm run prepare
- Компиляция es2015
- Компиляция Jade-шаблонов
- PostCSS с синтаксисом sugarss
- Добавление вендорных префиксов к свойствам
- Минификация css и js
- Оптимизация картинок
- авто-обновление браузера
- подготовка стилей
rtl - загрузка зависимостей js через npm
- загрузка файлов на сервер по ssh
- Валидация html на w3c
- архивирование файлов
distиsrcпапок - слежение за изменениями файлов
- генерация файлов стилей и шаблонов
- stylelint
- sugarss
- postcss-scss
- postcss-import
- precss
- postcss-inline-svg
- postcss-assets
- postcss-svgo
- postcss-hexrgba
- postcss-sass-color-functions
- postcss-short
- autoprefixer
gulpfile.js— папка в которой лежитgulpfileи таски.src— исходные файлы проектаdist— результат билда
Содержимое папки src
assetsstyles— стили проектаcommoncomponentshelpers
images— картинки проекта, включаяcontentпапку для картинок в контентеscripts— скрипты
templatespages— шаблоны страницcomponents— блоки из которых будут собираться страницы.partialslayout
В gulpfile.js/index.js описаны таски, которые выполняют те или иные действия. Таски можно вызывать по отдельности и группами. Вызов группами — самый частый юзкейс.
Все gulp-плагины загружаются автоматически из package.json с помощью плагина gulp-load-plugins. Это позволяет уменьшить объем gulpfile.
Gulp в процессе работы берет файл из 1 папки, выполняет с ним необходимые операции и сохраняет в другой папке. Для удобства, все пути к файлам я вынес в переменные и храню их в файле config.json.
В процессе работы много времени уходит на создание файлов для компонентов и страниц. Я решил это дело автоматизировать.
Теперь одной командой npm run addFile можно создать:
- стиль для компонента
- миксин
- шаблон для компонента
- и страницу
При создании стиля для компонента, можно создать файл для респонсив версии, и все это автоматически подключится в main.scss При создании новой страницы, она добавится в список всех страниц в файле index.pug
Все задачи запускаются посредством npm scripts.
npm start— запускgulp dev. Чтобы запустить browsersync на другом порту, можно писатьPORT=8080 npm startnpm run production— запускgulp productionnpm run deploy— запускgulp deploynpm run validate— запускgulp validatenpm run minify— запускgulp minifynpm run add— запуск генератора файлов
styles— компиляция sassstyles:min— минификацияcssostyles:rtl— вариант стилей справа-налевоscripts— компиляция es2015scripts:min— минификация jsimages— перенос картинок изsrcвdistimages:min— оптимизация картинок вdisttemplates— компиляция jade-шаблоновsprites— сборка спрайтовwatch— слежение за изменениями файловbrowsersync— автообновление в браузереarchive— архивацияdistиsrcпапокarchive:dist— архивацияdistarchive:src— архивацияsrcssh— запуск задачssh:clean,ssh:upload,ssh:unzipssh:clean— заходит на сервер, чистит папку проектаssh:upload— загружает на сервер архивdistпапкиssh:unzip— распаковывае на сервереdistархив и удаляет егоw3c:html— валидация html кода
default—bower,images,styles,scripts,templates,spritesdev—default,browsersync,watchminify—images:min,styles:min,scripts:minproduction—default,styles:rtl,minifydeploy—production,archive,sshvalidate—w3c:html