Введение
Gulp — это таск-менеджер для автоматического выполнения часто используемых задач
(например, минификации, тестирования, объединения файлов), написанный на
языке программирования JavaScript.
Программное обеспечение использует
командную строку для запуска задач, определённых в файле Gulpfile.
Создан как ответвление от проекта Grunt, чтоб взять из него лучшие практики.
Распространяется через менеджер пакетов
NPM
под MIT лицензией.
Если Вы будете копировать код с этой страницы — имейте в виду, что я ставлю кое-где лишние
проблелы — исключительно для того, чтобы текст лучше помещался на экран. Смело удаляйте их.
Это основная статья об использовании Gulp.
В данный момент Вы можете помимо этой прочитать также статьи:
Как скопировать папку с помощью Gulp |
|
Объединить и сжать несколько css файлов в один |
|
Как отправить файлы по ftp с помощью Gulp |
|
Gulp series |
|
Обработка только изменённых файлов с помощью gulp.watch().on(‘change’) |
— решите проблему пустой папки и восстановите отсутствующие файлы
В основном существует три варианта решения проблемы папки, не отображающей файлы, но при этом, занимающей память в Windows 10, 8 и 7. Найти и отобразить ваши файлы возможно с помощью Проводника Windows, командной строки или же стороннего программного обеспечения для восстановления данных.
1. Показать скрытые или потерянные файлы с помощью Проводника
Microsoft предоставляет подробное руководство о том, как же отобразить скрытые файлы во всех версиях Windows, в том числе Windows 10, 8.1 и 7. Несмотря на небольшую разницу в процессе выполнения для каждой версии, окончательный алгоритм действий в основном тот же — найти опции папки. Например, в Windows 10 можно отобразить все файлы с помощью этих двух шагов:
В поле поиска на панели задач введите имя папки, а затем выберите Показать скрытые файлы и папки из результатов поиска.
В разделе Дополнительные параметры выберите Показать скрытые файлы, папки и диски, а затем нажмите кнопку ОК.
2. Показать скрытые файлы с помощью командной строки
Наиболее эффективный способ отобразить скрытые файлы. Процесс выполнения универсален для всех версий Windows:
Шаг 1. Откройте командную строку от имени администратора, нажав клавиши Windows + R одновременно и введите cmd в поле поиска.
Шаг 2. Проверьте, на каком диске папка отображается пустой, например, диск G, затем введите команду attrib-h-r-s /s /d g:\*.* и нажмите клавишу Ввод. (Замените букву g на соответствующую.)
3. Восстановление скрытых файлов в пустой папке с помощью программы восстановления данных
Последний, но наиболее распространенный способ отображения потерянных файлов — это использование программного обеспечения для восстановления данных. Например, EaseUS File Recovery является бесплатным, но при этом профессиональным и удобным инструментом для восстановления всех видов файлов, которые были удалены, скрыты или потеряны. Программа не требует никаких компьютерных навыков, более того, процедура восстановления займёт всего несколько минут. Просто выполните следующие действия и найдите потерянные файлы.
Шаг 1. Запустите программу восстановления данных с жесткого диска от EaseUS.
Запустите EaseUS Data Recovery Wizard и выберите тот диск, на котором вы потеряли или случайно удалили файлы.
Нажмите «Сканировать», чтобы начать поиск всех потерянных данных и файлов.
Шаг 2. Дождитесь завершения сканирования.
Программа от EaseUS просканирует указанный диск полностью и представит вам всю потерянную информацию (включая скрытые файлы).
Шаг 3. Просмотрите список найденных файлов и восстановите нужные из них.
После предварительного просмотра, выберите нужные вам файлы, которые были потеряны на диске, и нажмите кнопку «»Восстановить»», чтобы сохранить их в безопасном месте на вашем компьютере или другом внешнем запоминающем устройстве.»
В заключение, не стоит сдаваться, если папка, которая должна содержать файлы, отображается пустой. Применив вышеуказанные методы быстрого восстановления, вы, безусловно, сможете вернуть все недостающие файлы.
Взаимодействие при пессимистической блокировке
Чтобы повысить удобство работы в перечисленных ситуациях, мы сделали несколько изменений.
Во-первых, в версии 8.3.14 мы изменили логику, по которой снимается пессимистическая блокировка. Раньше она снималась после того, как пользователь закрывает форму. Теперь она снимается раньше, после того, как данные, которые изменялись в форме, записаны. О том, что данные записаны, сигнализирует признак модифицированности формы. Через минуту после того, как у формы снимается признак модифицированности, платформа автоматически снимает и пессимистическую блокировку.
Поэтому теперь достаточно просто записать данные в форме, а саму форму можно оставить открытой. Через минуту другие пользователи смогут изменять эти же данные.
Во-вторых, в версии 8.3.15 мы пошли ещё дальше, и задействовали в этом процессе систему взаимодействия. Сервер взаимодействия 1С:Диалог, развернутый фирмой «1С», доступен для всех желающих. Поэтому любые пользователи прикладных решений могут зарегистрировать на нём свою информационную базу и пользоваться его возможностями.
Так вот теперь, если прикладное решение подключено к системе взаимодействия, сценарий редактирования одних и тех же данных будет выглядеть более простым и удобным. Рассмотрим пару примеров.
Пример 1. Менеджер по продажам решил добавить в заказ №17 ещё несколько товаров. Он открыл документ и начал подбирать товары. В этот момент администратор захотел изменить статус у этого же заказа.
Как только администратор нажмёт в форме кнопку Выполнен, он увидит такой диалог:
На всякий случай, чтобы ничего не испортить, администратор нажимает Написать сообщение пользователю? После этого у администратора появляется следующий диалог:
Допустим, администратор решает ничего не менять в сообщении и нажимает Отправить сообщение. Тогда у менеджера по продажам появляется такое оповещение:
Поскольку менеджер по продажам всё ещё редактирует заказ, он нажимает на это оповещение и через систему взаимодействия отвечает администратору:
Администратор решает подождать, и заняться пока другими делами. В клиентском приложении у администратора по-прежнему отображается самый первый диалог. Этот диалог отсчитывает время и ожидает возможности начать редактирование.
Как только менеджер по продажам закроет форму заказа (или через минуту после того, как он сохранит данные), администратор узнает об этом. Форма (у менеджера) автоматически снимет пессимистическую блокировку, а администратор увидит у себя следующее сообщение:
Теперь администратор просто нажмёт Перечитать, увидит новые данные, которые добавил в этот заказ менеджер по продажам, и сможет изменить статус заказа.
Пример 2. Администратор начал вносить изменения в заказ, но не закончил, и ушёл домой. Документ так и остался открытым и несохранённым. Придя домой, администратор решил всё же закончить изменения сегодня, не оставлять на завтра. Он подключился к базе, открыл этот заказ и попытался изменить его. В результате он увидел следующее:
Поскольку он прекрасно помнит, что он хотел изменить в этом заказе, он решил не сохранять изменения, выполненные на работе, а сделать сейчас всё то же самое ещё раз. Он нажимает Начать редактировать и получает такое оповещение:
Это значит что платформа, с помощью системы взаимодействия, сняла пессимистическую блокировку, установленную в сеансе, открытом на работе.
Администратор вносит изменения и сохраняет их.
Придя на работу завтра, он увидит на своём компьютере этот же открытый документ, который он оставил вчера, и следующее сообщение в центре оповещений:
Что такое Gulp, чем он хорош и нужен ли он простому верстальщику?
Так что же такое Gulp?
Gulp позволяет решать такие задачи, как:
- использование различных JS, CSS, HTML препроцессоров для ускорения верстки (CoffeeScript, SASS, LESS, Stylus, Pug (Jade) и др.);
- объединение файлов в один — js, css, html;
- минимизация кода файлов — js, css, html;
- создание локального веб-сервера и перезагрузка страницы браузера при сохранении файла проекта (live reaload);
- автоматическая простановка вендорных префиксов в CSS-файле для поддержки стилей устаревшими браузерами;
- работа с изображениями сайта — объединение в спрайты (в том числе и SVG-спрайты), оптимизация (уменьшение веса);
- копирование файлов проекта из одной папки в другую, создавая при это рез. копию;
- создание иконочных шрифтов;
- и многое другое…
Одним словом, круг задач, решаемых с помощью галп достаточно широк и грех всем этим не воспользоваться. Когда я впервые столкнулся с GruntJs мне казалось, что подобные сборки нужны только для крупных и поддерживаемых проектов. А я верстаю небольших макеты и мне это не нужно. Ох как же я ошибался. На самом деле данный инструмент нужен любому веб-разработчику, он здорово экономит время. Представьте, я раньше делал спрайты изображений вручную — это же натуральная рутина. А в Gulp, установив нужный плагин мне достаточно добавить нужное изображение в определенную папку и скрипт сделает все за меня, выдав уже готовый объединенный файл изображений.
Ну что сказать, все в жизни происходит когда-то впервые. Если сказать в целом, Gulp и множество плагинов для него превращает его в мощный инструмент решения задач как маленьких, так и крупных проектов. Теперь давайте разберем более подробнее как его установить и как с ним работать.
Организация файлов
Чтобы не создавать каши из файлов и папок организуем всё правильно с самого начала.
Корневая папка носит называние проекта. В моё случае heihei или heiheiru
В этой папке мы инициализируем GIT и npm.
npm создаст папку
node_modules и файлы package.json , package-lock.json.
Для GIT мы сами рано или поздно создадим файл gitignore
Так как мы будем пользоваться Gulp появится и файл gulpfile.js
С ростом числа заданий, которые будет выполнять Gulp нам станет неудобно хранить их все в одном
файле.
В gulpfile.js мы будем только импортировать другие .js файлы по принципу — на каждое
задание один файл.
Чтобы хранить эти файлы нам будет нужна папка, назовём её gulp и создадим в корневой. Внутри неё создадим
подпапку tasks
Всё, что относится непосредственно к сайту положим в папку heiheiru/app
index.html положим в корень app а
.css файлы, картинки и скрипты мы положим в папки heiheiru/app/assets/styles
heiheiru/app/assets/images , heiheiru/app/assets/scripts
Так будет выглядить дерево папок в редакоторе Sublime
Отключите создание эскизов.
Если удаление эскизов помогло, и вы хотите полностью остановить их создание, то вы без проблем можете это сделать. Попробуйте это решение, даже если ни один из предыдущих методов не помог. Постарайтесь протестировать все существующие решения, пока не найдете то, которое устранит проблему. Существует множество способов отключить создание эскизов. Вот самые популярные:
С помощью Параметров Проводника
- Откройте Этот компьютер и нажмите Вид в самом верху окна.
- В раскрывшемся меню найдите и выберите Доступные опции.
- В открывшемся окне перейдите в Вид, прокрутите немного вниз и выберите Всегда отображать значки, а не эскизы под Файлы и папки.
- Нажмите Применить и OK для сохранения изменений.
Через Параметры Производительности
- Откройте Этот компьютер и щелкните правой кнопкой мыши по пустому месту под дисками.
- Выберите Свойства и перейдите в Дополнительные параметры системы.
- Под Производительность, нажмите Настройки.
- В появившемся списке опций найдите и снимите отметку с опции Вывод эскизов вместо значков.
- Нажмите Применить и OK для сохранения изменений.
Через Редактор реестра
- Нажмите Windows Key + R кнопки и впишите в поле.
- Откройте его и подтвердите действие в окне UAC.
- Затем откройте этот путь на левой панели.
- После открытия папки передовой папки, вы увидите список записей на правой панели.
- Найдите IconsOnly и дважды щелкните по нему.
- Измените значение на 1 и нажмите OK чтобы отключить создание эскизов. Если вы захотите включить их снова, просто введите вместо 1.
Через Редактор групповой политики
- Нажмите Windows Key + R кнопки, как было выше, введите в поле и щелкните OK or Enter , чтобы открыть редактор.
- На левой панели перейдите в Конфигурация пользователя > Административные шаблоны > Компоненты Windows > Проводник.
- После нажатия на Проводник, вы увидете список различных записей.
- Найдите и дважды кликните по Отключить кеширование эскизов в скрытых файлах thumbs.db.
- Установите значение на Включено. Нажмите Применить и OK для сохранения изменений.
Все 4 метода преследуют одну и ту же цель — отключить создание миниатюр и не дать им вызвать проблемы с редактированием файлов. Выберите любой из них и внимательно следуйте каждому шагу. Особенно внимательно следует быть при изменении значений в редакторах реестра и групповой политики. Изменение других настроек, вместо перечисленных, может привести к проблемам с другими сегментами, поэтому выполняйте каждый шаг строго, как написано.
Gulpfile.js
После установки Gulp нужно в корневой директории проекта
(в моём случае — heiheiru)
создать файл gulpfile.js
в который мы будем записывать инструкции для Gulp.
Первым делом запишем туда
После того как файл gulpfile.js создан
можно запустить Gulp
gulp
Результатом будет похожее сообщение
Using gulpfile ~\Desktop\Sites\heihei\gulpfile.js
Task never defined: default
To list available tasks, try running: gulp —tasks
Gulp жалуется на то, что не определно задание по умолчанию — default task
Нужно его определить
vi gulpfile.js
gulp
default запустится но теперь Gulp пожалуется на непонятное закрытие.
Using gulpfile ~\Desktop\Sites\heihei\gulpfile.js
Starting ‘default’…
Gulp is running!
The following tasks did not complete: default
Did you forget to signal async completion?
Эту ошибку можно устранить несколькими способами. Подробности
. Я пользуюсь следующим:
gulp
Дополнительные полезные плагины для Gulp
Проект, что мы создали выше это самый простейший набор плагинов Gulp. Его функциональность можно значительно расширить, установив и настроив дополнительные плагины. Я составил список, которые сам использую в своих проектах.
Plumber — дает возможность продолжить работу gulp при ошибке в коде. На самом деле, если вы в коде (html, js, sass, css) сделаете ошибку gulp выдаст ее в консоли и прекратит свою работу. Вам необходимо будет исправить ошибку и вновь запустить gulp.
Sourcemaps — создает карту подключений файлов css и js. Обычно в подобных проектах файлы стилей и скриптов делят на несколько частей для удобства. Так вот, чтобы потом ориентироваться в каком файле и в какой строке находится та или иная запись как раз и нужна карта подключений.
Tinypng — сжатие изображений. Работает по той же аналогии, что и imagemin, но сжимает значительно лучше.
SvgSprite — сборка svg-спрайта иконок. В последнее время я перешел с иконочных шрифтов на svg иконки. Чтобы уменьшить количество http запросов к серверу нужно собирать иконки в спрайты.
Rigger — объединяет html-файлы в один. Необходимо, когда вы разбиваете html-файлы на отдельные неизменяемые блоки, например, шапка сайта, футер и т.д.
BrowserSync — перезагрузка браузера. Очень полезное дополнение, т.к. не нужно тратить время на обновление браузера, плагин делает это автоматически при сохранении измененных файлов. В плагине используется встроенный простенький локальный-сервер.
Spritesmith — создание спрайтов картинок. Еще один плагин для сборки спрайтов, только в данном случае из иконок Png. Также использую его частенько, т.к. не всегда иконки в макете бывают в формате svg.
Rimraf — очистка папки dist. Бывает, что приходится очищать время от времени папку продакшена dist, т.к. в нем могут скопиться неиспользуемые файлы. Например, вы переименовали файл стилей в другое название, таким образом у вас в dist будут две копии — старая и новая.
На этом я завершаю данную статью, которая и так получилась достаточно объемной. Я сам очень долго изучал эту тему, а инструкции в интернете в основном являлись переводами зарубежных статей, в которых описывалось все скромно.
Конечно я буду еще писать на тему Gulp, т.к. сам постоянно развиваюсь и стараюсь делать свои проекты как можно проще и быстрее. Обязательно поделюсь своей сборкой в Github.
Жду ваши комментарии ниже. Подписывайтесь на мой канал в телеграм. До встречи в следующих статьях!
Настраиваем боковую панель Finder
Разумеется, борьбу с информационным шумом я начал с оптимизацией боковой панели Finder. По умолчанию здесь расположено целое полотенце из стандартах папок пользовательского каталога (приложения, документы, загрузки и т.п). Почему бы не сделать её удобнее и проще?
Оказалось, что многие из этих папок используются очень редко или не используются вообще. В некоторых из них все же есть ценная информация, но доступ к ней требует много кликов.
Хороший пример – папка Dropbox. Вроде бы и удобно держать её в боковой панели, но реальность в том, что я никогда не работаю с её корнем. Все, что меня там интересует — конкретные проекты, а точнее, папки Writing, Mrkdwn и Design (я сознательно вынес только то, над чем работаю ежедневно). Думаю вы догадались, что корневая папка Dropbox попала под нож, а папки проектов наоборот – оказались в боковой панели Finder.
После небольшой оптимизации в боковой панели остались только следующие элементы:
- b166ar – родительская папка пользователя. Изредка все же нужно получить доступ к базовым разделам (Рабочему столу, Документам и т.п.), так что её имеет смысл оставить;
- Загрузки — место сбора всех новых файлов. Все, что загружается из сети или копируется с внешних накопителей попадает только сюда (ни в коем случае не на Рабочий стол). На эту папку настроены много заданий в Hazel, которые автоматически раскладывают новые файлы по соответствующим местам (фильмы и музыку в медиатеку iTunes, фото в iPhoto и т.п.);
- Screens — папка для скриншотов. Сюда автоматически попадают все скриншоты с Mac, а также скриншоты iPhone и iPad из Фотопотока. О том, как это работает, я расскажу в обзоре Hazel;
- Writing — папка с текущими текстами;
- Mrkdwn – проект руководства по Markdown;
- Design – папка с моими экспериментами по новому дизайну сайта
Как видите, у меня нет привычных всем разделов Программы, Документы, Фильмы, Музыка и Изображения. Давайте я объясню почему.
Программы — папка со всеми установленными приложениями. Здорово и вроде бы полезно. Но я никогда не захожу туда, чтобы открыть какую-то программу. Для этого есть отличный лаунчер Alfred. Если же с памятью моей совсем плохо, то всегда есть Launchpad.
Единственная полезная функция папки Программы в боковой панели — возможность быстро перетянуть (установить) только что загруженную программу. Но и она почти утратила свою актуальность. Во-первых, почти все программы автоматически устанавливаются из App Store. Во-вторых, даже если в папке Загрузки и появится какой-то .app, то Hazel сразу перенесёт его в папку Программы и запустит его для меня. Если же это .dmg, то он сразу будет смонтирован.
- Документы. 99% моих документов, это тексты, которые находятся в папке Writings (реально ~/Dropbox/Writings), которая отдельно вынесена в боковую панель Finder. Я не использую для хранения iCloud, так как привык постоянно менять текстовые редакторы и устройства. А вот все личные документы, которых не наберётся и десятка, я как раз и поместил в хранилище документов iCloud (iA Writer, Numbers, Keynote…). В результате я всегда имею доступ ко всем своим текстам и совсем не завишу от папки Документы;
- Фильмы, Изображения, Музыка. Подавляющее большинство фильмов, которые я загружаю, имеет iTunes-совместимый формат. А значит, все видео-файлы, которые попадают в Загрузки автоматически импортируются в медиатеку iTunes, а оригиналы отправляются в корзину. За это спасибо отличному плагину Automatic и Hazel.
То же самое происходит с музыкой, а вот с изображениями немножко интересней. Все фотографии я импортирую непосредственно через iPhoto. В папку Загрузки, как правило, попадают какие-то картинки из сети (дизайны интерьеров, рабочих столов, приколы, кошечки, собачки…).
Организовать автоматический импорт в Pixa не менее легко. Для этого подойдёт Hazel с триггерами по тегам. Если Hazel видит картинку с тегом design/workspace/fun…, то сразу отправляет её в Pixa, а оригинал удаляет.
Как видите, папки Фильмы, Изображения и Музыка также остались не у дел. Конечно, там есть какая-то информация, но она редко используется и не стоит того, чтобы отдельно выносить их в Finder.
Macintosh HD (корневой каталог диска). Работать с корнем диска дурной тон, который перекочевал из Windows систем. Корневой папкой должна быть папка пользователя и ничего более
Обратите внимание, что этот диск можно спрятать как через настройки Finder, сняв галочку с «Жёсткие диски», так и нажав на нем правой кнопкой мыши и выбрав «Удалить из бокового меню». Последнее удобно, когда вам необходимо оставить в Finder сетевые диски
Поскольку самой используемой папкой, к которой я обращаюсь через Finder, оказалась папка Загрузки, то я попросил Finder при запуске отображать именно её. Сделать это можно в Настройках.
Ошибки
SKIPPING OPTIONAL DEPENDENCY: fsevents
Ошибка при установке gulp. Вы выполняете
$ npm install gulp —save-dev
А на выходе
npm WARN saveError ENOENT: no such file or directory, open ‘C:\Users\ao\Desktop\Sites\heihei\package.json’
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN enoent ENOENT: no such file or directory, open ‘C:\Users\ao\Desktop\Sites\heihei\package.json’
npm WARN heihei No description
npm WARN heihei No repository field.
npm WARN heihei No README data
npm WARN heihei No license field.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.9 (node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.9: wanted {«os»:»darwin»,»arch»:»any»} (current: {«os»:»win32″,»arch»:»x64″})
+ gulp@4.0.2
added 314 packages from 217 contributors and audited 6490 packages in 30.037s
found 0 vulnerabilities
Скорее всего Вы не инициализировали npm. Нужно выполнить
npm init
Ввести нужные данные (либо просто нажимать Enter), после чего создастся файл package.json и можно будет вернуться к установке gulp
Unhandled ‘error’ event
events.js:174
throw er; // Unhandled ‘error’ event
^
CssSyntaxError: postcss-simple-vars: C:\Users\ao\Desktop\Sites\travel-site\app\assets\styles\modules\_large-hero.css:5:2: Undefined variable $aMadeUpVariable2
Может быть вызвана, например, несуществующей переменной. Допустим Вы добавили цвет
как переменную, но нигде её не задали.
Unexpected identifier
Если Вы запустили Gulp
gulp
И получили что-то похожее
SyntaxError: Unexpected identifier
at Module._compile (internal/modules/cjs/loader.js:723:23)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
at Module.require (internal/modules/cjs/loader.js:692:17)
at require (internal/modules/cjs/helpers.js:25:18)
at execute (C:\Users\ao\AppData\Roaming\npm\node_modules\gulp-cli\lib\versioned\^4.0.0\index.js:36:18)
at Liftoff.handleArguments (C:\Users\ao\AppData\Roaming\npm\node_modules\gulp-cli\index.js:201:24)
at Liftoff.execute (C:\Users\ao\AppData\Roaming\npm\node_modules\gulp-cli\node_modules\liftoff\index.js:201:12)
Скорее всего Вы пытаетесь использовать синтаксис ES2015+ и не установили babel или он работает но с ошибкой.
Здесь два выхода — разобраться и настроить либо перейти к старому синтаксису с require
5
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.9 (node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.9: wanted {«os»:»darwin»,»arch»:»any»} (current: {«os»:»win32″,»arch»:»x64″})
Установка Gulp
Установку Gulp я буду показывать на примере ОС Windows 10 x64 последней сборки, так как я работаю именно в данной системе.
Первым делом нам необходимо установить node.js. Данный пакет превращает клиентский язык javaScript в серверный. Для тех, кто не знает язык javaScript интерпретирует браузер пользователя. Кстати, Gulp создан на языке javaScript и если вы знакомы с данным языком, то освоить его вам будет намного легче.
Для установки node.js необходимо скачать инсталлятор с официального сайта. Качаем последнюю стабильную версию. Пакет устанавливается как обычная программа и ничего сложного в этом нет.
После установки node.js можно проверить правильно ли все установилось. Открываем консольное окно (командная строка) — в ОС Windows это комбинация клавиш . Вводим команду:
Если все правильно установили в ответ вы увидите версию установленного пакета.
Все, можно приступать к установке Gulp.
Пишем команду для установки Gulp:
Давайте разберем, что значит данная запись:
- npm — говорит о том, что мы запускаем пакет менеджер, который установит Gulp;
- i — это сокращенная запись install, т.е. установить;
- gulp — имя устанавливаемого пакета;
- -g — данный флаг говорит о том, что мы устанавливаем Gulp глобально в систему. Без данного ключа gulp установится в ту папку, из которой запускается команда. Так что имейте это ввиду.
Установка не занимает много времени, примерно 1-2 мин. После завершения работы установщика галп можно проверить корректность установки, также, как и node.js:
Если все правильно, то выдаст версию установленного галп.
Неудобства пессимистической блокировки
Само название этой блокировки говорит о её неудобстве. Когда пользователь начинает редактировать данные в форме, неизвестно, чем это закончится. Может быть, он откажется от своих изменений, и не станет сохранять изменения в базе данных. Но платформа предполагает самый плохой вариант, пессимистический, что данные обязательно будут изменены. И до тех пор, пока форма не закрыта, платформа будет блокировать эти данные для других пользователей.
В результате могут возникать следующие неудобные ситуации:
- Пользователь начал редактировать документ, но решил не сохранять свои изменения. Отвлёкся, и забыл закрыть форму. Другие пользователи не смогут изменить этот документ до тех пор, пока пользователь не вспомнит, и не закроет форму;
- Пользователь начал редактировать документ, но решил закончить завтра. Придя домой, он решил не откладывать на завтра, подключился к базе данных, но не смог изменить этот документ, потому что документ остался открытым у него на рабочем компьютере;
- Сообщение, которое информирует о том, что объект заблокирован, не позволяет снять блокировку. Даже в том случае, когда её установили вы сами, но в другом сеансе на другом компьютере, и вы точно знаете, что она вам не нужна.
Создание проекта
Двигаемся дальше. Теперь создайте папку проекта в удобном месте вашего компьютера. Назовем ее, например, gproject.
Перейдем в папку проекта и запустим консоль команд для данного каталога. Наиболее быстрый вариант сделать это зажать клавишу «Shift» и удерживая ее щелкнуть правой кнопкой мыши на пустой области окна каталога. Откроется контекстное меню, в котором выбираем «Открываем окно PowerShell здесь«. Данный пункт может называться и по другому — «Открыть окно команд«.
Запускаем инициализацию проекта командой:
Заполняем необходимые поля проекта по шагам и желательно латиницей. После ввода названия жмем Enter и переходим с следующему шагу.
- package-name: вводим название проекта маленькими буквами
- version: оставляем по умолчанию — 1.0.0
- description: вводим описание проекта, например, My first gulp project.
- entry point: (index.js), test command:, git repository:, keywords: — данные шаги оставляем по умолчанию, жмем Enter и переходим к следующему шагу
- author: впишите имя автора, я ввел Zaur Magomedov
- license: оставляем по умолчанию
- Is this ok? — вводим «yes» и жмем Enter поле чего в папке нашего проекта появится файл package.json.
Файл package.json содержит в себе информацию о проекте + информацию об установленных пакетах (плагинов). Это своего рода файл манифеста. Теперь давайте установим Gulp локально в папку нашего проекта. Для этого пишем следующую команду:
флаг —save-dev как раз говорит установщику установить gulp локально в папку нашего проекта.
При установке gulp название пакета и его версия автоматически пропишутся в файле package.json. Вообще такой подход позволяет сохранять файл package.json со всеми установленными пакетами (зависимости), а при разворачивании нового проекта достаточно скопировать данный файл и запустить команду установки в консоли проекта — и все пакеты в проект установятся автоматически. Сейчас может вам будет не совсем понятно, но дальше я уверен вы поймете.
И так, после установки gulp в папке проекта должна появиться папка node_modules, она содержит в себе необходимые зависимости. Также все новые установленные зависимости, прописываемые в package.json будут складываться именно в данную папку. Так что ничего не трогайте в ней и не удаляйте. Не пугайтесь если увидите в ней много файлов и папок.
Давайте откроем файл package.json реактором кода и взглянем на его содержимое.
Мы видим всю ту информацию, которую вводили при инициализации проекта + ниже в блоке «devDependencies» указаны установленные зависимости и их версии. В данном случае это gulp версии 3.9.1. Как я и говорил установилась локально именно та версия, что стоит глобально.
Установка
Рассмотрим установку с помощью
npm. Подразумевается, что
nodejs
Вы уже установили.
О том как установить npm читайте в моей статье
О том как установить более старую версию Gulp —
$ npm install gulp-cli —global
C:\Users\ao\AppData\Roaming\npm\gulp ->
C:\Users\ao\AppData\Roaming\npm\node_modules\gulp-cli\bin\gulp.js
+ gulp-cli@2.2.0
updated 7 packages in 7.386s
Проверить версию gulp
gulp -v
CLI version: 2.2.0
Local version: Unknown
Про установку не последней, а какой-то определённой версии Gulp читайте
Теперь нужно перейти в директорию, в которой Вы планируете работать. Я буду
делать сайт www.HeiHei.ru поэтому перехожу в директорию
$ cd /c/Users/ao/Desktop/Sites/heihei
Затем переходим непосредственно к установке gulp в текущий проект
$ npm install gulp —save-dev
vi package.json
Появился раздел devDependencies, в который в будущем я добавлю ещё довольно много пакетов.
Если теперь посмотреть содержимое папки node_modules
можно увидеть, что установка Gulp добавила не одну папку, как, например,
сделал бы
а несколько десятков.
Старые версии
npm создавали всегда одну папку и размещали все зависимости туда.
Новые версии npm сохраняют зависимости в родительскую папку node_modules.
Установка более старой версии
Иногда бывает нужно установить не текущую, а более ранню версию Gulp.
Особенно это касается версии 3.9.1 , которая сильно отличается от 4 и выше.
Сделать это можно добавив нужную версию после @
npm install gulp@3.9.1 —save-dev
npm install gulp-cli@1.2.1 —save-dev
Если Вы хотите сперва удалить Вашу версию Gulp а уже потом установить другую — сделать
это можно командой uninstall
npm uninstall gulp
gulp-watch
gulp-watch это название плагина для Gulp, который отслеживает изменение файлов. Начиная с четвёртой
версии Gulp gulp-watch включен в основной пакет и не требует отдельной установки.
Начнём с простого — делаем функцию, которая при каждом изменении файла index.html в
папке app будет выводить предупреждение.
Как это выглядит в Gulp 4
Чтобы запустить мониторинг пишем
gulp watch
Using gulpfile ~\Desktop\Sites\heihei\gulpfile.js
Starting ‘watch’…
Теперь вносим изменения в файл index.html и сохраняем
Starting ‘html’…
Кто-то отредактировал index.html!
Как это выглядело в Gulp 3
Создадим папку /app/assets/styles/ , в которой будут файлы .css для разработки
Напишем функцию, которая будет собирать все файлы .css из этой папки,
обрабатывать их с помощью sass и соединять в один файл /app/temp/styles/style.css
Мы уже писали такую функцию выше, просто немного изменим её.
Добавим мониторинг файлов CSS gulp.watch( «./app/assets/styles/**/*.css», style);
Теперь как только мы отредактируем один из файлов стилей watch заметит это изменение,
пропустит его через sass, соберет все файлы в один.
Зачем нужен SASS:
чтобы пользоваться css переменными. Создать переменную, которую потом
вставлять в .css пропускать через sass compiler и когда вдруг везде нужно будет
изменить значение этой переменной, например, на сайте изменится основной цвет, всё
что нам нужно будет сделать — это поменять одну переменную в одном файле.
чтобы делать вложения в стилях (nested css)
чтобы использовать mixins
Разворачивание готовой сборки одной командой
Вы создали сборку, теперь хотите реально создать на ней проект. Достаточно скопировать папку сборки и запустить установку. Вообще при установке должны устанавливаться все последние версии зависимостей, включая сам gulp (при обновлении глобальной версии). Для этого нам необходимо подредактировать файл package.json. В блоке devDependencies, где перечислены установленные расширения вместо версии необходимо указать ключевое слово — . Вот как теперь выглядит мой файл:
Теперь для быстрого разворачивания проекта необходимо сделать следующее — копируем все файлы проекта Gulp за исключением папки node_modules в другую папку вашего проекта. Открываем локально консоль и вводим команду после чего запуститься установка gulp и всех зависимостей. Все, можно начинать работу.