Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ gulp ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½

Gulp для ускорСния Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Gulp, Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½, Π΅Π³ΠΎ возмоТности, ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈ ΠΊΠ°ΠΊ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ сайтов.

ВозмоТности Gulp:

Как ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Gulp глобально Π² систСмС

Установка Gulp глобально Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Π»Π° доступна ΠΊΠΎΠΌΠ°Π½Π΄Π° gulp Π² ΠΎΠΊΠ½Π΅ ΠΊΠΎΠΌΠ°Π½Π΄ / bash.

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку ΠΈ ввСсти ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ тСкст:

ΠšΠΎΡ€ΠΎΡ‚ΠΊΠΎ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ gulp ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ gulp ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ gulp ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ gulp ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ gulp ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½

Установка Gulp Π² ΠΏΠ°ΠΏΠΊΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

ΠŸΡ€ΠΈ создании ΠΏΠ°ΠΏΠΎΠΊ Π±ΡƒΠ΄ΡƒΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅: всС ΠΏΠ°ΠΏΠΊΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ написаны латинскими Π±ΡƒΠΊΠ²Π°ΠΌΠΈ, Π½ΠΈΠΊΠ°ΠΊΠΈΡ… русских символов Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ, это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹.

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ для создания Ρ„Π°ΠΉΠ»Π° package.json :

Или Ρ‡Ρ‚ΠΎΠ±Ρ‹ быстро ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ package.json ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅:

Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ всю ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ (Π½Π°Π·Π²Π°Π½ΠΈΠ΅, описаниС, Π°Π²Ρ‚ΠΎΡ€ ΠΈ Ρ‚.Π΄.), Π° Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΎΠ± ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… зависимостях Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° package.json с ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ npm init:

Для установки Gulp Π² Π½Π°ΡˆΡƒ ΠΏΠ°ΠΏΠΊΡƒ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:

Π•ΡΡ‚ΡŒ нСсколько ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΉ ΠΎΡ‚ установки Gulp глобально.

ПослС установки gulp ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ gulp ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ gulp ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ gulp ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ gulp ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ gulp ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ структуры Gulp ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ практичСски любой. Π£ нас Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ:

Как ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ (таски) Gulp

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Ρ„Π°ΠΉΠ» gulpfile.js ΠΈ Π½Π°Ρ‡Π½Ρ‘ΠΌ Π΅Π³ΠΎ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅.

Π’ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобках ΠΌΡ‹ ΡƒΠΊΠ°ΠΆΠ΅ΠΌ, всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Gulp ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ. Π”Π°Π»Π΅Π΅, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ (ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹) для Gulp.

Π—Π°Π΄Π°Ρ‡Π° (функция) Π² Gulp ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄.

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ), которая Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ строку ‘ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Gulp!’.

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ gulp ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ gulp ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ gulp ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ gulp ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ gulp ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½

Запуск Π·Π°Π΄Π°Ρ‡ΠΈ Gulp ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

Π­Ρ‚ΠΎ Π±Ρ‹Π» самый простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Gulp. Для Π±ΠΎΠ»Π΅Π΅ слоТных Π·Π°Π΄Π°Ρ‡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ gulp

Как ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΌΡ‹ рассмотрСли. Π’Π΅ΠΏΠ΅Ρ€ΡŒ рассмотрим, ΠΊΠ°ΠΊ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹.

Gulp src / dest

Π‘Π½Π°Ρ‡Π°Π»Π° рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π°Ρ‚Π΅ΠΌ ΡƒΠΆΠ΅ Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ (Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ) для Π²Ρ‹Π±ΠΎΡ€Π° Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π΄Π²ΡƒΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²:

Π’ src ΠΌΡ‹ использовали ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ css/**.css для Π²Ρ‹Π±ΠΎΡ€Π° всСх css Ρ„Π°ΠΉΠ»ΠΎΠ² Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠ°ΠΏΠΊΠΈ /assets/css/ (ΠΈΡΠΊΠ»ΡŽΡ‡Π°Ρ Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΊΠ°Ρ…, Ссли Ρ‚Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ² для Π²Ρ‹Π±ΠΎΡ€Π° Ρ„Π°ΠΉΠ»ΠΎΠ²:

Gulp series / parallel

Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π±Ρ‹Π»Π° ΡƒΠΊΠ°Π·Π°Π½Π° ΠΎΠ΄Π½Π° функция, Π½ΠΎ Π·Π°Π΄Π°Ρ‡ Π² gulp ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ. Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ всС пСрСчислСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ gulp Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅.

Π’ series ΠΌΡ‹ пСрСчисляСм список Π·Π°Π΄Π°Ρ‡ для ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ выполнСния.

Если Π½Π°ΠΌ Π½Π΅ Π²Π°ΠΆΠ½ΠΎ ΠΊΠΎΠ³Π΄Π° закончится Ρ‚Π° ΠΈΠ»ΠΈ иная Π·Π°Π΄Π°Ρ‡Π°, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ parallel :

Gulp lastRun()

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ускорСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния, Π·Π° счёт пропуска Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ измСнились с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° послСднСго ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ.

Установка, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈ использованиС ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² Gulp

Π­Ρ‚ΠΎ Π½Π°ΠΈΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½ΠΎ ΠΎΠ½ Ρ…ΠΎΡ€ΠΎΡˆΠΎ дСмонстрируСт ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ дСйствий.

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ списка Π·Π°Π΄Π°Ρ‡ Gulp

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ.

ОбновлСниС ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² (вСрсий ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²)

ОбновлСниС Π² автоматичСском Ρ€Π΅ΠΆΠΈΠΌΠ΅.

Или ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ/ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ/ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ слСдуя ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ.

Gulp 4

НуТно Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ для Gulp 4.

Π‘Ρ‚Π°Ρ‚ΡŒΠΈ ΠΏΡ€ΠΎ Gulp

EnglishRussian
GulpΠ“Π»ΠΎΡ‚ΠΎΠΊ
DependenciesЗависимости
TaskΠ—Π°Π΄Π°Ρ‡Π°
VariableΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ
WatchΠΠ°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ
DestinationΠŸΡƒΠ½ΠΊΡ‚ назначСния

НадСюсь, Π²Π°ΠΌ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ»Π°ΡΡŒ данная информация. Если Π²Π°ΠΌ интСрСсна Ρ‚Π΅ΠΌΠ° web-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ Π½ΠΎΠ²Ρ‹Ρ… статСй Π² Telegram.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ gulp ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ gulp ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ gulp ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ gulp ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ gulp ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ gulp ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ gulp ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½

Gulp β€” это инструмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€ΡƒΡ‚ΠΈΠ½Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ. Π§Π°Ρ‰Π΅ всСго gulp ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² frontend Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ для Ρ‚Π°ΠΊΠΈΡ… Π·Π°Π΄Π°Ρ‡:

Если Π²Ρ‹ Π²Π½Π΅Π΄Ρ€ΠΈΡ‚Π΅ Π² свою ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒ эту систСму, Π²Ρ‹ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚Π΅ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ вашСй Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π’Π°ΠΊ ΠΆΠ΅ gulp ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ Π²Π°ΠΌ ΠΏΡƒΡ‚ΡŒ ΠΊ Π½ΠΎΠ²Ρ‹ΠΌ возмоТностям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ повысит ваш ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π·Π½Π°Π½ΠΈΠΉ Π² Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Установка Gulp

Установка Gulp 4 довольно простая. Π’Π°ΠΊ ΠΊΠ°ΠΊ Gulp написан Π½Π° языкС javascript, ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Node.js Π½Π° Π²Π°ΡˆΡƒ систСму. ΠŸΡ€ΠΎΡΡ‚ΠΎ Π·Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ Π½Π° сайт https://nodejs.org, скачиваСтС инсталятор послСдний вСрсии ΠΈ устанавливаСтС.

Π”Π°Π»Π΅Π΅ создаСм ΠΏΠ°ΠΏΠΊΡƒ для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² любом ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΌ мСстС ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΎΠΊΠ½ΠΎ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° Π² этом ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅. Π’ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС запускаСм ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°:

ΠžΡ‚Π²Π΅Ρ‡Π°Π΅ΠΌ Π½Π° вопросы Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС. ПослС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π° Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ Enter ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΡˆΠ°Π³Ρƒ. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Ρ„Π°ΠΉΠ» package.json, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΈ установлСнных ΠΏΠ»Π°Π³ΠΈΠ½Π°Ρ…. Π”Π°Π»Π΅Π΅ установим gulp Π² наш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚:

ПослС установкС Gulp 4 Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΈ Π΅Π³ΠΎ вСрсия сохранятся Π² Ρ„Π°ΠΉΠ»Π΅ package.json. Π€Π»Π°Π³ —save-dev ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для сохранСния ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π² package.json Π² Ρ€Π°Π·Π΄Π΅Π» devDependencies, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π² цСлях Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Если ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ с Ρ„Π»Π°Π³ΠΎΠΌ —save, Ρ‚ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π² Ρ€Π°Π·Π΄Π΅Π» dependencies (для запуска прилоТСния).

Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ всС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π² Ρ„Π°ΠΉΠ»Π΅ package.json со всСми зависимостями, Π° ΠΏΡ€ΠΈ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° достаточно ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» package.json ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ всС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΈ зависимости установятся автоматичСски. ПослС установки gulp Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° создалась ΠΏΠ°ΠΏΠΊΠ° node_modules. ВсС Π½ΠΎΠ²Ρ‹Π΅ установлСнныС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΈ зависимости ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² Π΄Π°Π½Π½ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ содСрТимоС этого ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° нСльзя.

Π”Π°Π»Π΅Π΅ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° создаСм Ρ„Π°ΠΉΠ» gulpfile.js. Π­Ρ‚ΠΎ самый основной Ρ„Π°ΠΉΠ», Π±Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Gulp Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚. По сути Π² Π½Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ любой javascript ΠΊΠΎΠ΄, Π½ΠΎ gulp β€” это ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ управлСния Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ, ΠΈ эти Π·Π°Π΄Π°Ρ‡ΠΈ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² этом Ρ„Π°ΠΉΠ»Π΅ Π² Π²ΠΈΠ΄Π΅ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Π§Ρ‚ΠΎ Π±Ρ‹ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ эти Π·Π°Π΄Π°Ρ‡ΠΈ, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π½ΡƒΠΆΠ½ΠΎ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ exports. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

На ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅ ΠΌΡ‹ создали Π·Π°Π΄Π°Ρ‡Ρƒ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ testTask, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ строчку test. ПослС этого ΠΌΡ‹ экспортируСм эту Π·Π°Π΄Π°Ρ‡Ρƒ. Π§Ρ‚ΠΎ Π±Ρ‹ Gulp Π·Π½Π°Π», Ρ‡Ρ‚ΠΎ Π·Π°Π΄Π°Ρ‡Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π°, ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° done.

Π§Ρ‚ΠΎ Π±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Gulp, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ глобально Π½Π° Π²Π°ΡˆΡƒ систСму:

ПослС этого Π² консоли Π²Π²ΠΎΠ΄ΠΈΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ gulp ΠΈ Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€ΠΎΠ±Π΅Π» Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ:

Но Π΅ΡΡ‚ΡŒ ΠΈ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚. МоТно ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ запуска Π² Ρ„Π°ΠΉΠ»Π΅ package.json для Ρ€Π°Π·Π΄Π΅Π»Π° scripts:

Π’ этом случаС запускаСтся Π·Π°Π΄Π°Ρ‡Π° Ρ‚Π°ΠΊ:

gulp β€” это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ с Ρ€Π°Π·Π΄Π΅Π»Π° scripts Ρ„Π°ΠΉΠ»Π° package.json, Π° test β€” Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ. Π’ ΠΈΡ‚ΠΎΠ³Π΅ Π² консолС вывСдСтся слово test: Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ gulp ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ gulp ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ gulp ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ gulp ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ gulp ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½

Π—Π°Π΄Π°Ρ‡Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (gulp default task)

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π² Ρ„Π°ΠΉΠ»Π΅ gulpfile.js Π·Π°Π΄Π°Ρ‡Ρƒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π­Ρ‚ΠΎΡ‚ такс Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ Ρ‚ΠΎΡ‡ΠΊΡƒ Π²Ρ…ΠΎΠ΄Π° Π² наш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. ЦСль этой Π·Π°Π΄Π°Ρ‡ΠΈ β€” ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ таски Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ gulp Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π’ нашСм случаС ΠΌΡ‹ Π·Π°ΠΌΠ΅Π½ΠΈΠΌ таск test Π½Π° default Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ экспорта:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ для запуска ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ввСсти:

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΊΠ°ΠΊ ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅, Π½ΠΎ ΠΏΡ€ΠΈ этом ΠΌΡ‹ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ таск, Π° запускаСм Π·Π°Π΄Π°Ρ‡Ρƒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

Gulp parallel, gulp series

Π’ Gulp ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ parallel ΠΈ series для объСдинСния Π·Π°Π΄Π°Ρ‡ Π² Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ. ΠœΠ΅Ρ‚ΠΎΠ΄ parallel запускаСт Π·Π°Π΄Π°Ρ‡ΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π² любой ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. ΠœΠ΅Ρ‚ΠΎΠ΄ series β€” выполняСт Π·Π°Π΄Π°Ρ‡ΠΈ ΠΎΠ΄Π½Π° Π·Π° ΠΎΠ΄Π½ΠΎΠΉ Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ порядкС:

На ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅, Π·Π°Π΄Π°Ρ‡ΠΈ a ΠΈ b Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ. Волько послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ этих Π·Π°Π΄Π°Ρ‡, Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ таски c ΠΈ d Π² ΠΏΠ°Ρ€Π°Π»Π΅Π»ΡŒΠ½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅.

Gulp src, gulp dist, gulp pipe

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΊ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅, опрСдСлимся Π΅Ρ‰Π΅ с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌΠΈ понятиями. Π Π°Π½Π΅Π΅ ΠΌΡ‹ создали тСстовый таск, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ просто Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² консоль. Но смысл gulp Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ€ΡƒΡ‚ΠΈΠ½Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ Π² процСссС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами β€” Π²Π·ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Ρ„Π°ΠΉΠ» нашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ манипуляции с Π½ΠΈΠΌ, ΠΈ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ». Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ Ρ„Π°ΠΉΠ», ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ gulp.src(‘source-file’), Π° исходящий β€” gulp.dest(‘dest-folder’). Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

ΠŸΠ΅Ρ€Π²ΠΎΠΉ строчкой ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ сам gulp Π² наш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. Π”Π°Π»Π΅Π΅ создаСм таск, ΠΊΠ°ΠΊ ΠΌΡ‹ Π΄Π΅Π»Π°Π»ΠΈ это Ρ€Π°Π½Π΅Π΅. Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ gulp Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ с Ρ„Π°ΠΉΠ»ΠΎΠΌ test.js. ПослС этого Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Ρ‚ΠΎΠ΄ pipe Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ gulp, Ρ‡Ρ‚ΠΎ исходная ΠΏΠ°ΠΏΠΊΠ° называСтся output. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΡ‹ просто скопировали Ρ„Π°ΠΉΠ» test.js Π² ΠΏΠ°ΠΏΠΊΡƒ output.

ΠœΠ΅Ρ‚ΠΎΠ΄ pipe β€” это основноС API для gulp. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΊΠ°ΠΊ Π±Ρ‹ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ всС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ таска. Π§Π΅Ρ€Π΅Π· pipe ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΡƒΡŽ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ ΠΈΠ· ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ для создания ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… сцСнариСв.

Π¨Π°Π±Π»ΠΎΠ½Ρ‹ ΠΏΡƒΡ‚Π΅ΠΉ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ

ΠžΡ‡Π΅Π½ΡŒ часто Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π° Π²Ρ…ΠΎΠ΄ gulp ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π½Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», Π° Π³Ρ€ΡƒΠΏΠΏΡƒ Ρ„Π°ΠΉΠ»ΠΎΠ². Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹. Рассмотрим Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΠ½ΠΈ Π±Ρ‹Π²Π°ΡŽΡ‚:

./input/*.js β€” Π²Ρ‹Π±Π΅Ρ€Π΅Ρ‚ всС Ρ„Π°ΠΉΠ»Ρ‹ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ js Π² ΠΊΠΎΡ€Π½Π΅ ΠΏΠ°ΠΏΠΊΠΈ input

./input/**/*.js β€” Π²Ρ‹Π±Π΅Ρ€Π΅Ρ‚ всС Ρ„Π°ΠΉΠ»Ρ‹ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ js Π² ΠΊΠΎΡ€Π½Π΅ ΠΏΠ°ΠΏΠΊΠΈ input ΠΈ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ…

!./input/test.js β€” ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ» test.js ΠΈΠ· Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ

./input/*.+(js, css) β€” Π²Ρ‹Π±Π΅Ρ€Π΅Ρ‚ Ρ„Π°ΠΉΠ»Ρ‹ js ΠΈ css

Π’Π°ΠΊ ΠΆΠ΅, Π² качСствС Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π² gulp ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ массив с нСсколькими Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ ΠΈΠ»ΠΈ шаблонами:

На ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ всС Ρ„Π°ΠΉΠ»Ρ‹ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ css, Π½ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Ρ„Π°ΠΉΠ» test.css.

Gulp ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» gulp достаточно ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π΅Π½. Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ слоТныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, это Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΡ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΊ сСбС Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ‚ΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ. БущСствуСт ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² для gulp. Найти ΠΈ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΈΡ… описаниС ΠΌΠΎΠΆΠ½ΠΎ Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ сайтС.

Π Π°Π½Π΅Π΅ ΠΌΡ‹ написали скрипт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ просто ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ Ρ„Π°ΠΉΠ» Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ. Π”Π°Π²Π°ΠΉΡ‚Π΅ услоТним Π·Π°Π΄Π°Ρ‡Ρƒ: ΠΏΡ€ΠΈ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ имя Ρ„Π°ΠΉΠ»Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎ пСрСимСновываСтся. Для этого ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ называСтся gulp-rename. Для Π½Π°Ρ‡Π°Π»Π°, установим этот ΠΏΠ»Π°Π³ΠΈΠ½:

Π›ΡŽΠ±ΠΎΠΉ ΠΏΠ»Π°Π³ΠΈΠ½, ΠΊΠ°ΠΊ ΠΈ npm ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, устанавливаСтся Π² ΠΏΠ°ΠΏΠΊΡƒ node_modules, ΠΈ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π² Ρ„Π°ΠΉΠ» package.json. Π”Π°Π»Π΅Π΅ Π΅Π³ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² gulpfile.js, ΠΈ Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Ρ‚ΠΎΠ΄ pipe Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ:

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ Π±Π΅Ρ€Π΅ΠΌ Ρ„Π°ΠΉΠ» test.js, ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Π΅ΠΌ Π΅Π³ΠΎ Π² testNew.js, ΠΈ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ Π² ΠΏΠ°ΠΏΠΊΡƒ output.

Gulp сборка для вСрстки сайта. Π‘Ρ‚Π°Ρ€Ρ‚ΠΎΠ²Ρ‹ΠΉ шаблон

И Ρ‚Π°ΠΊ, ΠΌΡ‹ установили Gulp, настроили ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ созданию своСй сборки для вСрстки сайта.

Для Π½Π°Ρ‡Π°Π»Π° поставим сСбС Π·Π°Π΄Π°Ρ‡Ρƒ: ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ стартовый шаблон для Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π»ΡŽΠ±Ρ‹ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ. Π‘Π±ΠΎΡ€ΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ряд Π·Π°Π΄Π°Ρ‡: Ρ€Π°Π±ΠΎΡ‚Π° с прСпроцСссорами, минификация ΠΊΠΎΠ΄Π°, сТатия ΠΈ прСобразования ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, конвСртация ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ², сборка спрайтов, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ частСй html Π² Π΅Π΄ΠΈΠ½Ρ‹ΠΉ шаблон ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅.

Π Π΅ΠΆΠΈΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Gulp сборка Π΄ΠΎΠ»ΠΆΠ½Π° Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ Π² Π΄Π²ΡƒΡ… Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ…: сборка ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ сборка для ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠΈΠ½. Π’ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Π°ΠΆΠ½Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹, поэтому ΠΌΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΌΠΈΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄, ΡΠΆΠΈΠΌΠ°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚Ρ€ΡƒΠ΄ΠΎΠ΅ΠΌΠΊΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. Π’ Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠΈΠ½ ΠΌΡ‹ ΠΏΠΎΠ΄Π³ΠΎΡ‚Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ наш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΊ Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅ΠΌΡƒ использованию ΠΈΠ»ΠΈ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠ΅ Π½Π° хостинг, ΠΎΡ‡ΠΈΡ‰Π°Π΅ΠΌ ΠΎΡ‚ всСго лишнСго, сТимаСм ΠΊΠΎΠ΄ ΠΈ выполняСм Π΄Ρ€ΡƒΠ³ΠΈΠ΅ дСйствия. Π”Π°Π²Π°ΠΉΡ‚Π΅ это Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ.

Π’ Ρ„Π°ΠΉΠ»Π΅ package.json Π² Ρ€Π°Π·Π΄Π΅Π» scripts вносим Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ измСнСния:

Для запуска сборки Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ввСсти ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

Для запуска Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠΈΠ½:

Как Π²ΠΈΠ΄ΠΈΠΌ Π²Ρ‹ΡˆΠ΅, Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΏΡ€ΠΎΠ΄ ΠΌΡ‹ добавляСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ окруТСния prod. Π”Π°Π»Π΅Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π² ΠΊΠ°ΠΊΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½ yargs:

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ этот ΠΏΠ»Π°Π³ΠΈΠ½ Π² gulpfile.js:

Если Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ сборку Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π΄Π΅Π², Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ argv.prod Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½ΠΎ undefined, Π° Ссли Π² ΠΏΡ€ΠΎΠ΄ Ρ€Π΅ΠΆΠΈΠΌΠ΅, Ρ‚ΠΎ true. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ссли пСрСмСнная argv.prod Ρ€Π°Π²Π½Π° true, Ρ‚ΠΎ ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ Π² ΠΏΡ€ΠΎΠ΄ Ρ€Π΅ΠΆΠΈΠΌΠ΅. Если Π½Π΅ true, Ρ‚ΠΎ Π΄Π΅Π² Ρ€Π΅ΠΆΠΈΠΌ.

Для удобства, создадим Π΄Π²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ Ρ€Π΅ΠΆΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹:

Ѐайловая структура gulp сборки

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π±Π°Π·ΠΎΠ²ΡƒΡŽ структуру Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΏΠ°ΠΏΠΎΠΊ. Π­Ρ‚ΠΎ стандартная структура любого web ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΠΎΠ΄ свой вкус ΠΈ потрСбности.

Рассмотрим ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ ΠΈ Ρ„Π°ΠΉΠ»Π°:

Π­Ρ‚ΠΎ основная файловая структура сборки, Π½ΠΎ ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π² Ρ…ΠΎΠ΄Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹.

Π”Π°Π²Π°ΠΉΡ‚Π΅ сразу Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Ρ„Π°ΠΉΠ» .gitignore Π² ΠΊΠΎΡ€Π΅Π½ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ содСрТимым:

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ скрываСм ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ dist ΠΈ node_modules ΠΎΡ‚ систСм ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ вСрсий, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ автоматичСски.

Настройка ΠΏΡƒΡ‚Π΅ΠΉ

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π² ΠΊΠΎΡ€Π½Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Ρ„Π°ΠΉΠ» projectConfig.json. Π­Ρ‚ΠΎ простой json Ρ„Π°ΠΉΠ», Π² Π½Π΅Π³ΠΎ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ настройки для нашСй сборки. Для Π½Π°Ρ‡Π°Π»Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ для ΠΏΡƒΡ‚Π΅ΠΉ:

ΠœΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ path, которая Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ содСрТит Π΄Π²Π° значСния: настройки ΠΏΡƒΡ‚Π΅ΠΉ для исходников ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ для Π³ΠΎΡ‚ΠΎΠ²ΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°. Π’ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ эти значСния, Ρ‡Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ нашСй gulp сборки. Π’ процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π½Π°ΠΌ настройки.

Π”Π°Π»Π΅Π΅ Π² gulpfile.js ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠΌ Ρ„Π°ΠΉΠ» с настройками:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ обратится ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ path ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ значСния.

Browser sync gulp. АвтоматичСскоС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ страницы Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅

Browser sync β€” это ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΏΠ»Π°Π³ΠΈΠ½. Он позволяСт ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ страницы сайта, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ сСрвСр, ΠΈ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ сайта. Установим ΠΏΠ»Π°Π³ΠΈΠ½ browsersync Π² наш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚:

Π’ Ρ„Π°ΠΉΠ»Π΅ gulpfile.js Π΄ΠΎΠ±Π°Π²ΠΈΠΌ описаниС таска для ΠΏΠ»Π°Π³ΠΈΠ½Π° browsersync. На Π΄Π°Π½Π½ΠΎΠΌ этапС Ρ„Π°ΠΉΠ» gulpfile.js выглядит Ρ‚Π°ΠΊ:

ВсС ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ: ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ browserSync Ρ‡Π΅Ρ€Π΅Π· require, описываСм Π·Π°Π΄Π°Ρ‡Ρƒ для Π½Π΅Π³ΠΎ, ΠΈ запускаСм таск ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΈ запускС gulp автоматичСски откроСтся Π±Ρ€Π°ΡƒΠ·Π΅Ρ€. На Π΄Π°Π½Π½ΠΎΠΌ этапС Π½Π°ΠΌ этого Π±ΡƒΠ΄Π΅Ρ‚ достаточно.

Gulp html

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с html, Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡˆΠ°Π±Π»ΠΎΠ½ΠΈΠ·Π°Ρ‚ΠΎΡ€ nunjucks (ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΡƒΡ‚). Для Π½Π°Ρ‡Π°Π»Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ структуру ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² для ΡˆΡ‚ΠΌΠ» Ρ„Π°ΠΉΠ»ΠΎΠ²:

Рассмотрим ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ структуру:

НиТний ΠΏΡ€ΠΎΡ‡Π΅Ρ€ΠΊ Π² Π½Π°Π·Π²Π°Π½ΠΈΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΏΠ°ΠΏΠΎΠΊ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π² основной Ρ„Π°ΠΉΠ».

Π”Π°Π»Π΅Π΅ Π·Π°Π΄Π°Π΄ΠΈΠΌ настройки ΠΏΡƒΡ‚Π΅ΠΉ для html Π² Ρ„Π°ΠΉΠ»Π΅ projectΠ‘onfig.json. Π’ Ρ€Π°Π·Π΄Π΅Π» src Π΄ΠΎΠ±Π°Π²ΠΈΠΌ массив со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΠΏΠΊΠΈ, Π³Π΄Π΅ находятся ΡˆΡ‚ΠΌΠ» Ρ„Π°ΠΉΠ»Ρ‹, ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° с исходниками ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Аналогично Π΄ΠΎΠ±Π°Π²ΠΈΠΌ значСния для исходящСго Ρ„Π°ΠΉΠ»Π° Π² Ρ€Π°Π·Π΄Π΅Π» dist.

Π’ gulpfile.js создадим массив ΠΏΡƒΡ‚Π΅ΠΉ для Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²:

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ строкС Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΡƒΡ‚ΡŒ ΠΊ html Ρ„Π°ΠΉΠ»Π°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π·Π°ΠΏΡ€Π΅Ρ‰Π°Π΅ΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с Π½ΠΈΠΆΠ½Π΅Π³ΠΎ ΠΏΡ€ΠΎΡ‡Π΅Ρ€ΠΊΠ°. Π’ Ρ‚Ρ€Π΅Ρ‚Π΅ΠΉ ΠΈ Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΠΎΠΉ Π·Π°ΠΏΡ€Π΅Ρ‰Π°Π΅ΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ с ΠΏΠ°ΠΏΠΊΠΈ assets ΠΈ _html. Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Ρ‚Π°ΠΊΠΎΠΉ массив:

Π’Π°ΠΊ ΠΆΠ΅ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ для ΠΏΠ°ΠΏΠΊΠΈ с Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ html Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ:

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Ρ‚Π°ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅:

И Ρ‚Π°ΠΊ, ΠΏΡƒΡ‚ΠΈ ΠΌΡ‹ сформировали, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ описываСм Π·Π°Π΄Π°Ρ‡Ρƒ для html Ρ„Π°ΠΉΠ»ΠΎΠ²:

Как Π²ΠΈΠ΄ΠΈΠΌ, это обычная Π·Π°Π΄Π°Ρ‡Π° для gulp. Π’ ΠΊΠΎΠ½Ρ†Π΅ этого таска ΠΌΡ‹ автоматичСски ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€.

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΎΠ±Ρ‰ΠΈΠΉ каркас для всСх страниц сайта Π² Ρ„Π°ΠΉΠ»Π΅ _default.html:

Π’ Ρ„Π°ΠΉΠ»Π°Ρ… _header.html ΠΈ _footer.html Π²Ρ‹Π²Π΅Π΄Π΅ΠΌ Π²Π΅Ρ€Ρ…Π½ΡŽΡŽ ΠΈ ниТнюю части сайта, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΊ основному ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ. _header.html:

Π’ Ρ„Π°ΠΉΠ»Π΅ index.html находится основная Ρ‡Π°ΡΡ‚ΡŒ Π³Π»Π°Π²Π½ΠΎΠΉ страницы сайта:

На ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅ ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ title страницы ΠΈ класса Ρ‚Π΅Π³Π° body. Π’ процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΡ… Π² основной шаблон. Π”Π°Π»Π΅Π΅ ΠΌΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ наслСдуСм основной шаблон ΠΈ Π² Π±Π»ΠΎΠΊΠ΅ content описываСм ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ страницы.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠ΅ html Ρ„Π°ΠΉΠ»Ρ‹ для нашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΈΡ… Π² шаблон ΠΈ ΠΌΠ΅Π½ΡΡ‚ΡŒ содСрТимоС Π² ΠΎΠ΄Π½ΠΎΠΌ мСстС.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ запустим Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ таск:

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Ρ‚Π°ΠΊΡƒΡŽ страницу: Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ gulp ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ gulp ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ gulp ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ gulp ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ gulp ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½

Как Π²ΠΈΠ΄ΠΈΠΌ, всС исходники ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ Π² ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ» index.html. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ сколь ΡƒΠ³ΠΎΠ΄Π½ΠΎ html Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ всС ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒΡΡ Π² ΠΏΠ°ΠΏΠΊΠ΅ dist.

Gulp watch. ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅ΠΌ измСнСния Π² Ρ„Π°ΠΉΠ»Π°Ρ…

Π’ Gulp прСдусмотрСн ΠΌΠ΅Ρ‚ΠΎΠ΄ watch, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ измСнСния Π² Ρ‚ΠΎΠΌ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅. Если ΠΌΡ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ наш Ρ„Π°ΠΉΠ» index.html, Ρ‚ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° watch ΠΌΠΎΠΆΠ½ΠΎ автоматичСски Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‚ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ таск. Π Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ это Π² нашСй сборкС.

Для Π½Π°Ρ‡Π°Π»Π° Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ path ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ свойство watch ΠΊΠ°ΠΊ пустой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚:

Π’ Π½Π΅ΠΉ ΡƒΠΊΠ°ΠΆΠ΅ΠΌ Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ для сборки html:

Π’ΠΎ Π΅ΡΡ‚ΡŒ, ΠΌΡ‹ отслСТиваСм всС Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΏΠ°ΠΏΠΊΠ΅ src. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ gulp tack для отслСТивания ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Ρ„Π°ΠΉΠ»Π°Ρ…:

На ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅ ΠΌΡ‹ создали ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ таск, Π² Π½Π΅ΠΌ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ watch, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π΄Π²Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°: ΠΊΠ°ΠΊΠΈΠ΅ Ρ„Π°Π»Ρ‹ отслСТиваСм, ΠΈ ΠΊΠ°ΠΊΠΎΠΉ таск запускаСм ΠΏΡ€ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² этих Ρ„Π°ΠΉΠ»Π°Ρ….

ПослС этого ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½Ρ‹ΠΉ таск:

Π—Π΄Π΅ΡΡŒ сначала запускаСтся таск njk, послС этого Π² ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ запускаСм Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ сСрвСр ΠΈ отслСТиваниС Π² Ρ„Π°ΠΉΠ»Π°Ρ….

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΈ запускС Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½ΠΎΠ³ΠΎ таска откроСтся главная страница Π½Π° локальном сСрвСрС. ΠŸΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π² ΡˆΡ‚ΠΌΠ» Ρ„Π°ΠΉΠ»Π°Ρ… сайт обновляСтся автоматичСски ΡƒΠΆΠ΅ с ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

Gulp scss. Π Π°Π±ΠΎΡ‚Π° со стилями

Π’ качСствС прСпроцСссора для стилСй Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ SASS Π² синтаксисС SCSS. Π’ ΠΏΠ°ΠΏΠΊΠ΅ src/assets/css создадим Ρ„Π°ΠΉΠ» app.scss. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ основной Ρ„Π°ΠΉΠ» стилСй.

Π’ projectΠ‘onfig.json Π·Π°Π΄Π°Π΅ΠΌ настройки ΠΏΡƒΡ‚Π΅ΠΉ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ стилСй. Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ src добавляСм:

Π’ gulpfile.js Π·Π°Π΄Π°Π΅ΠΌ массив ΠΏΡƒΡ‚Π΅ΠΉ для Ρ„Π°ΠΉΠ»ΠΎΠ² стилСй:

Π‘Ρ€Π°Π·Ρƒ ΠΎΡ‚ΠΊΡ€ΠΎΠ΅ΠΌ наш основной шаблон _default.html ΠΈ Π² Ρ€Π°Π·Π΄Π΅Π» head Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Ρ„Π°ΠΉΠ» стилСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ называСтся app.min.css:

Π”Π°Π»Π΅Π΅ добавляСм Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со стилями:

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ всС эти ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹:

Π”Π°Π»Π΅Π΅ создаСм gulp таск для CSS стилСй:

Рассмотрим Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ ΠΊΠΎΠ΄ Π²Ρ‹ΡˆΠ΅. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ»Π°Π³ΠΈΠ½Π° gulpif ΠΌΡ‹ провСряСм Π² ΠΊΠ°ΠΊΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ. Если Π² Π΄Π΅Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅, Ρ‚ΠΎ ΠΌΡ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ sourcemaps, выполняСм ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ sass, сохраняСм sourcemaps Π² ΠΊΠΎΠ½Π΅Ρ† Ρ„Π°ΠΉΠ»Π°, добавляСм суффикс min ΠΊ названию Ρ„Π°ΠΉΠ»Π°, сохраняСм Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΈ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠ², Π² ΠΏΠ°ΠΏΠΊΠ΅ dist/css создастся Ρ„Π°ΠΉΠ» app.min.css. НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ суффикс min, стили Π² Π½Π΅ΠΌ Π½Π΅ сТаты ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ sourcemaps для удобства Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Π’ ΠΏΡ€ΠΎΠ΄ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ стили ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ для Π±ΠΎΠ΅Π²Ρ‹Ρ… условий. ПослС компиляции SASS Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ прСфиксы, Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΌΠ΅Π΄ΠΈΠ° запросы (gulp group css media queries). Π”Π°Π»Π΅Π΅ ΠΌΡ‹ сохраняСм нСсТатый Ρ„Π°ΠΉΠ» стилСй Π² ΠΏΠ°ΠΏΠΊΡƒ dist/css. Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» называСтся app.css ΠΈ ΠΎΠ½ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΊ сайту. Π‘Π΄Π΅Π»Π°Π½ΠΎ это для удобства, Ρ‡Ρ‚ΠΎ Π±Ρ‹ рядом со сТатым Ρ„Π°ΠΉΠ»ΠΎΠΌ Π±Ρ‹Π» ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» стилСй. Π”Π°Π»Π΅Π΅ ΠΌΡ‹ ΠΌΠΈΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌ стили, добавляСм суффикс min, сохраняСм ΠΈ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€. Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Ρ„Π°ΠΉΠ» app.min.css, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΡƒΠΆΠ½ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ автопрСфиксСр, ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π² Ρ„Π°ΠΉΠ» package.json ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ свойство browserslist Π² ΠΊΠΎΠ½Π΅Ρ† Ρ„Π°ΠΉΠ»Π°:

Π”ΠΎΠ±Π°Π²ΠΈΠΌ отслСТиваниС измСнСния Π² Ρ„Π°ΠΉΠ»Π°Ρ… стилС Π² таскС watch:

Π’Π°ΠΊ ΠΆΠ΅ скоррСктируСм таск ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ:

Gulp ΠΈ webpack. Π Π°Π±ΠΎΡ‚Π° со скриптами

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с js скриптами ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ webpack. Webpack β€” это популярный ΠΈ Π³ΠΈΠ±ΠΊΠΈΠΉ сборщик ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ для javascript. Он ΡƒΠΌΠ΅Π΅Ρ‚ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ Π²Π΅Π»ΠΈΠΊΠΎΠ΅ мноТСство Π·Π°Π΄Π°Ρ‡, ΠΊΠ°ΠΊ простых, Ρ‚Π°ΠΊ ΠΈ слоТных. Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΉ ΠΈ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ инструмСнт, с большим количСством Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ. Но Π² нашСй сборкС ΠΌΡ‹ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΏΠΎΠ΄Ρ€ΡƒΠΆΠΈΡ‚ΡŒ webpack ΠΈ gulp. Для этого Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ gulp ΠΏΠ»Π°Π³ΠΈΠ½ webpack-stream.

И Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, Π² Ρ„Π°ΠΉΠ»Π΅ projectΠ‘onfig.json Π·Π°Π΄Π°Π΄ΠΈΠΌ настройки ΠΏΡƒΡ‚Π΅ΠΉ для скриптов. Π Π°Π·Π΄Π΅Π» src:

Как Π²ΠΈΠ΄ΠΈΠΌ, исходный Ρ„Π°ΠΉΠ» находится ΠΏΠΎ ΠΏΡƒΡ‚ΠΈ src/assets/js/app.js, Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ скрипты Π±ΡƒΠ΄ΡƒΡ‚ Π² ΠΏΠ°ΠΏΠΊΡƒ dist/ assets/js/.

Π’ gulpfile.js Π·Π°Π΄Π°Π΅ΠΌ массивы с путями:

ПослС этого устанавливаСм Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹:

Рассмотрим ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠ»Π°Π³ΠΈΠ½:

ΠžΠΏΠΈΡΡ‹Π²Π°Π΅ΠΌ таск для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со скриптами. Для Π½Π°Ρ‡Π°Π»Π° создаСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ для ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ webpack:

Π—Π΄Π΅ΡΡŒ опрСдСляСм Π² ΠΊΠ°ΠΊΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ, Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ source maps Π² dev Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΈ Π·Π°Π΄Π°Π΅ΠΌ исходящий Ρ„Π°ΠΉΠ» app.js.

Π”Π°Π»Π΅Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ babel Π² ΠΏΡ€ΠΎΠ΄ Ρ€Π΅ΠΆΠΈΠΌΠ΅:

И Π½Π°ΠΊΠΎΠ½Π΅Ρ†, создаСм сам таск:

Π—Π΄Π΅ΡΡŒ всС ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ, ΠΊΠ°ΠΊ ΠΈ с таском со стилями. Π’ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ошибок, запускаСм webpack, сТимаСм Ρ„Π°ΠΉΠ» Π² ΠΏΡ€ΠΎΠ΄ Ρ€Π΅ΠΆΠΈΠΌΠ΅, добавляСм суффикс min ΠΈ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€.

Π”ΠΎΠ±Π°Π²ΠΈΠΌ Ρ„Π°ΠΉΠ»Ρ‹ для отслСТивания Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ watch:

Π”Π°Π»Π΅Π΅ измСняСм таск ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ:

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Ρ„Π°ΠΉΠ» app.js. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Π² шаблонС _default.html Ρ„Π°ΠΉΠ» app.min.js ΠΏΠ΅Ρ€Π΅Π΄ Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌΡΡ Ρ‚Π΅Π³ΠΎΠΌ body:

На этом настройка gulp Π·Π°Π΄Π°Ρ‡ΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со скриптами Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π°.

Gulp imagemin. Π‘ΠΆΠ°Ρ‚ΠΈΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ

Π”Π°Π»Π΅Π΅ ΠΌΡ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с изобраТСниями с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ»Π°Π³ΠΈΠ½Π° imagemin. Π­Ρ‚ΠΎΡ‚ ΠΏΠ»Π°Π³ΠΈΠ½ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для сТатия ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ².

Π—Π°Π΄Π°Π΄ΠΈΠΌ настройки для ΠΏΡƒΡ‚Π΅ΠΉ ΠΊ изобраТСниям. Π’ Ρ€Π°Π·Π΄Π΅Π» src Π΄ΠΎΠ±Π°Π²ΠΈΠΌ:

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ массивы настроСк Π² gulpfile.js:

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ‚Π°ΠΊΠΎΠΉ массив:

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΏΠ°ΠΏΠΊΡƒ svgIcons, которая ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ svg спрайтов. К этому ΠΌΡ‹ вСрнСмся Ρ‡ΡƒΡ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅. УстанавливаСм Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹:

Рассмотрим ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠ»Π°Π³ΠΈΠ½:

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ таск для сТатия ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ:

Gulp webp. ΠšΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΡ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² webp Ρ„ΠΎΡ€ΠΌΠ°Ρ‚

Π”Π°Π»Π΅Π΅ создадим таск, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ всС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² webp Ρ„ΠΎΡ€ΠΌΠ°Ρ‚. Π­Ρ‚ΠΎ дСлаСтся с Ρ†Π΅Π»ΡŒΡŽ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ скорости Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ сайта. Для этого установим ΠΏΠ»Π°Π³ΠΈΠ½ gulp-webp:

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠΌ этот ΠΏΠ»Π°Π³ΠΈΠ½:

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ таск для ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² webp:

Π’ этом таскС Π² качСствС Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΌΡ‹ Π±Π΅Ρ€Π΅ΠΌ изобраТСния Π² ΠΏΠ°ΠΏΠΊΠ΅ dist/img, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Π΅ΠΌ Π² webp Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΈ сохраняСм Π² эту ΠΆΠ΅ ΠΏΠ°ΠΏΠΊΡƒ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ совмСстим Π΄Π²Π° таска: сначала выполняСм сТатиС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΏΠΎΡ‚ΠΎΠΌ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΡŽ ΠΈ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ послС выполнСния этих Π΄Π²ΡƒΡ… Π·Π°Π΄Π°Ρ‡:

Π”Π°Π»Π΅Π΅ измСняСм таск ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ:

Π’Π°ΠΊΠΆΠ΅ установим отслСТиваниС Π·Π° изобраТСниями Π² исходной ΠΏΠ°ΠΏΠΊΠ΅:

Gulp fonts. Π Π°Π±ΠΎΡ‚Π° со ΡˆΡ€ΠΈΡ„Ρ‚Π°ΠΌΠΈ

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² нашСй сборкС β€” это Ρ€Π°Π±ΠΎΡ‚Π° со ΡˆΡ€ΠΈΡ„Ρ‚Π°ΠΌΠΈ. На сСгодняшний дСнь самыми популярными Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°ΠΌΠΈ ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ² ΡΠ²Π»ΡΡŽΡ‚ΡΡ woff2 ΠΈ woff. ИмСнно ΠΈΡ… ΠΈ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² CSS стилях. Для Π½Π°Ρ‡Π°Π»Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ ΠΏΡƒΡ‚ΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со ΡˆΡ€ΠΈΡ„Ρ‚Π°ΠΌΠΈ Π² Ρ„Π°ΠΉΠ»Π΅ projectΠ‘onfig.json. Π Π°Π·Π΄Π΅Π» src:

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ массив для настройки ΠΏΡƒΡ‚Π΅ΠΉ ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ²:

ΠžΡ‡Π΅Π½ΡŒ часто Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π·Π°Π΄Π°Ρ‡Π° ΡΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΡ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² Π² соврСмСнныС. Π­Ρ‚Π° Π·Π°Π΄Π°Ρ‡Π° довольно скучная, поэтому ΠΌΡ‹ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ gulp. ИмСнно Π² ΠΏΠ°ΠΏΠΊΠ΅ src Π±ΡƒΠ΄ΡƒΡ‚ сохранятся ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹ старых Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ², Π° ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… Π±ΡƒΠ΄Π΅ΠΌ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ woff2 ΠΈ woff ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ Π² ΠΏΠ°ΠΏΠΊΡƒ с исходными ΡˆΡ€ΠΈΡ„Ρ‚Π°ΠΌΠΈ.

Для Π½Π°Ρ‡Π°Π»Π° создадим Π·Π°Π΄Π°Ρ‡Ρƒ, которая ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΡˆΡ€ΠΈΡ„Ρ‚ ttf Π² woff2 ΠΈ woff. Нам понадобятся Π΄Π²Π° ΠΏΠ»Π°Π³ΠΈΠ½Π°: gulp-ttf2woff2 ΠΈ gulp-ttf2woff. УстанавливаСм ΠΈΡ…:

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ эти ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹:

Π”Π°Π»Π΅ описываСм таски для прСобразования ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ²:

ОбСдняСм эти таски, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΠΎΠ΄ΠΈΠ½ Π·Π° ΠΎΠ΄Π½ΠΈΠΌ:

ПослС этого экспортируСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ:

И Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ ttf ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² woff2 ΠΈ woff, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ввСсти ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

ПослС этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ всС ttf ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹ c ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° src ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ Π² соврСмСнныС Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ ΠΈ ΡΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² ΠΏΠ°ΠΏΠΊΡƒ /src/assets/fonts.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΡŽ с Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° otf. Для этого ΠΌΡ‹ сначала ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ otf Π² ttf, сохраним Π² ΠΏΠ°ΠΏΠΊΡƒ src, Π½Ρƒ Π° Π΄Π°Π»Π΅Π΅, ΠΊΠ°ΠΊ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ Π² Π½ΡƒΠΆΠ½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹. Для этого понадобится ΠΏΠ»Π°Π³ΠΈΠ½ fonter. УстанавливаСм Π΅Π³ΠΎ:

ΠžΠΏΠΈΡΡ‹Π²Π°Π΅ΠΌ таск для ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ:

Вносим измСнСния Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ fontsConvert:

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ всС ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ otf ΠΈ ttf ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ Π² Π½ΡƒΠΆΠ½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹. Π”Π°Π»Π΅Π΅ создадим таск, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ скопируСт эти ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹ Π² ΠΏΠ°ΠΏΠΊΡƒ dist:

ΠžΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌ таск ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ:

НастроСм отслСТиваниС Π·Π° Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π² ΠΏΠ°ΠΏΠΊΠ΅ со ΡˆΡ€ΠΈΡ„Ρ‚Π°ΠΌΠΈ:

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ src/assets/fonts (Π»ΠΈΠ±ΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Π»ΠΈΠ±ΠΎ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ), запускаСтся таск font, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ скопируСт ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹ Π² ΠΏΠ°ΠΏΠΊΡƒ dist/assets/fonts.

Gulp clean. ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° ΠΏΠ°ΠΏΠΊΠΈ dist

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ простой таск, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‡ΠΈΡ‰Π°Π΅Ρ‚ ΠΏΠ°ΠΏΠΊΡƒ dist. Π—Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΌΡ‹ Π΅Π³ΠΎ Π±ΡƒΠ΄Π΅ΠΌ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΡ€ΠΈ запускС нашСй сборки. Для этого ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠΌ npm ΠΏΠ»Π°Π³ΠΈΠ½ del:

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ таск clean:

Π’ Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½ΠΎΠΌ таскС Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ очистку ΠΏΠ΅Ρ€Π΅Π΄ всСми ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ:

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚

На этом ΠΏΠΎΠΊΠ° всС. ΠœΡ‹ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈ основы Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Gulp 4, рассмотрСли ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования, создали свою сборку для вСрстки сайта. Π’ Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΡ… ΡΡ‚Π°Ρ‚ΡŒΡΡ… ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π΅Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΈ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ исходники сборки ΠΌΠΎΠΆΠ½ΠΎ с рСпозитория.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *