Skip to content

malkovitc/NTH-start-project

Β 
Β 

Repository files navigation

Π‘Ρ‚Π°Ρ€Ρ‚ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с gulp Test Status devDependencies Status dependencies Status

Команда Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚
npm i Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ зависимости
npm start Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ сборку, сСрвСр ΠΈ слСТСниС Π·Π° Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ
npm start ЗАДАЧА Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ЗАДАЧА (список Π·Π°Π΄Π°Ρ‡ Π² ./gulpfile.js)
folder=src/img npm start img:opt ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ· ΠΏΠ°ΠΏΠΊΠΈ ./src/img (ΠΈΠ»ΠΈ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ)
npm run build Π‘Π±ΠΎΡ€ΠΊΠ° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π±Π΅Π· ΠΊΠ°Ρ€Ρ‚ ΠΊΠΎΠ΄Π° (сТатый Π²ΠΈΠ΄, ΠΊΠ°ΠΊ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹)
npm run deploy Π‘Π±ΠΎΡ€ΠΊΠ° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π±Π΅Π· ΠΊΠ°Ρ€Ρ‚ ΠΊΠΎΠ΄Π° ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° содСрТимого ΠΏΠ°ΠΏΠΊΠΈ сборки Π½Π° github-pages
npm run test:style ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° стилСвой ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° stylelint
npm start test:pug ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° pug-Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Ρ„ΠΎΡ€ΠΊΠ½ΡƒΡ‚Ρ‹ΠΌ gulp-pug-lint

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ всС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π²Ρ‹ выполняСтС Π² bash (для OSX ΠΈ Linux это самый ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ встроСнный Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π», для Windows это, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Git Bash). Π’ Windows установку ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² (npm i) Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»ΡΡ‚ΡŒ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅, Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠΌ ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ администратора.

Как Π½Π°Ρ‡Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ c этим Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΌ

  1. ΠšΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ этот Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π² Π½ΠΎΠ²ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ (git clone https://github.com/nicothin/NTH-start-project.git new-project, см. ΡˆΠΏΠ°Ρ€Π³Π°Π»ΠΊΡƒ) ΠΈ Π·Π°ΠΉΡ‚ΠΈ Π² Π½Π΅Ρ‘ (cd new-project).
  2. Π‘Ρ‚Π΅Ρ€Π΅Ρ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ этого рСпозитория (rm -rf .git), ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ (git init), ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΈ ΠΏΡ€ΠΈΠ²ΡΠ·Π°Ρ‚ΡŒ Π΅Π³ΠΎ (git remote add origin АДРЕБ, см. ΡˆΠΏΠ°Ρ€Π³Π°Π»ΠΊΡƒ).
  3. ΠžΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ README.md, package.json (Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π°Π²Ρ‚ΠΎΡ€, лицСнзия, сторонниС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΈ ΠΏΡ€.) ΠΈ projectConfig.json (Π½ΡƒΠΆΠ½Ρ‹Π΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π±Π»ΠΎΠΊΠΈ, сторонниС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹). Π£Π΄Π°Π»ΠΈΠ² ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΈΠ· package.json, Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΈΠ· сборки Π² projectConfig.json.
  4. Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ зависимости (npm i).
  5. Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ сСрвСр Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ (npm start).

Если ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ npm start Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ происходит, смотритС ./projectConfig.json (вСроятно, ΠΎΠ½ содСрТит ΡΠΈΠ½Ρ‚Π°ΠΊΡΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈΠ½Ρ‚Π΅Ρ€ΠΎΠΌ).

ΠŸΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ°

  • ИмСнованиС классов ΠΏΠΎ Π‘Π­Πœ, Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ° Π² pug ΠΈ стилизация Sass. Π‘ΠΌ. Как Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с CSS-прСпроцСссорами ΠΈ Π‘Π­Πœ
  • ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π‘Π­Πœ-Π±Π»ΠΎΠΊ Π² своСй ΠΏΠ°ΠΏΠΊΠ΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ ./src/blocks/.
  • Бписок ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π‘Π­Πœ-Π±Π»ΠΎΠΊΠΎΠ² ΠΈ Π΄ΠΎΠΏ. Ρ„Π°ΠΉΠ»ΠΎΠ² ΡƒΠΊΠ°Π·Π°Π½ Π² ./projectConfig.json. Π­Ρ‚ΠΎ Π³Π»Π°Π²Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.
  • Π•ΡΡ‚ΡŒ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹: стилСвыС (стили ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ), js (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ пуст), ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹, ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ.
  • ДиспСтчСр ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ стилСй ./src/scss/style.scss гСнСрируСтся автоматичСски ΠΏΡ€ΠΈ стартС любой gulp-Π·Π°Π΄Π°Ρ‡ΠΈ (Π½Π° основС Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· ./projectConfig.json).
  • Бписок pug-примСсСй ./src/pug/mixins.pug гСнСрируСтся автоматичСски ΠΏΡ€ΠΈ стартС любой gulp-Π·Π°Π΄Π°Ρ‡ΠΈ (Π½Π° основС Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· ./projectConfig.json), содСрТит include всСх ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… pug-Ρ„Π°ΠΉΠ»ΠΎΠ² Π±Π»ΠΎΠΊΠΎΠ² (pug-Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠ° Π½Π΅ являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ).
  • ΠŸΠ΅Ρ€Π΅Π΄ созданиСм ΠΊΠΎΠΌΠΌΠΈΡ‚Π° запускаСтся ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° стилСвых Ρ„Π°ΠΉΠ»ΠΎΠ², входящих Π² ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΈ всСх pug-Ρ„Π°ΠΉΠ»ΠΎΠ². ΠŸΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ошибок ΠΊΠΎΠΌΠΌΠΈΡ‚ Π½Π΅ происходит (ошибки Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½Ρ‹ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»).
  • Π•ΡΡ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ быстрого создания Π½ΠΎΠ²ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°: node createBlock.js new-block (создаёт Ρ„Π°ΠΉΠ»Ρ‹, ΠΏΠ°ΠΏΠΊΠΈ, прописываСт Π±Π»ΠΎΠΊ Π² ./projectConfig.json).

Π Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ°

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ pug. HTML Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ обрабатываСтся.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ наслСдованиС шаблонов β€” всС страницы (см. ./src/index.pug) ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΠΌΠΈ шаблонов, Π² страницах описываСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ содСрТимоС «шапки», Β«ΠΏΠΎΠ΄Π²Π°Π»Π°Β» ΠΈ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π½ΠΎΠΉ области посрСдством Π±Π»ΠΎΠΊΠΎΠ².

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π±Π»ΠΎΠΊ (Π² ./src/blocks/) ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ pug-Ρ„Π°ΠΉΠ» с ΠΎΠ΄Π½ΠΎΠΈΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅ΡΡŒΡŽ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ взят includ-ΠΎΠΌ Π² Ρ„Π°ΠΉΠ»Π΅ ./src/pug/mixins.pug (формируСтся автоматичСски Π½Π° основании списка ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π±Π»ΠΎΠΊΠΎΠ²).

Π‘Ρ‚ΠΈΠ»ΠΈ

Π€Π°ΠΉΠ»-диспСтчСр ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ (./src/scss/style.scss) формируСтся автоматичСски Π½Π° основании ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π² ./projectConfig.json Π±Π»ΠΎΠΊΠΎΠ² ΠΈ Π΄ΠΎΠΏ. Ρ„Π°ΠΉΠ»ΠΎΠ². ΠŸΠΈΡΠ°Ρ‚ΡŒ Π² ./src/scss/style.scss Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ Ρ€ΡƒΠΊΠ°ΠΌΠΈ бСссмыслСнно: ΠΏΡ€ΠΈ стартС Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„Π°ΠΉΠ» Π±ΡƒΠ΄Π΅Ρ‚ пСрСзаписан.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ постпроцСссинг:

  1. autoprefixer
  2. css-mqpacker
  3. postcss-import
  4. postcss-inline-svg
  5. gulp-cleancss (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ сборки Π±Π΅Π· ΠΊΠ°Ρ€Ρ‚ ΠΊΠΎΠ΄Π°)
  6. postcss-object-fit-images (Π² ΠΏΠ°Ρ€Π΅ с ΠΏΠΎΠ»ΠΈΡ„ΠΈΠ»ΠΎΠΌ)

ΠœΠΎΠ΄ΡƒΠ»ΡŒΠ½Π°Ρ сСтка (flexbox)

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² сборку бСрётся Ρ„Π°ΠΉΠ» с примСсями, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠΌΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠΉ сСтки. Никаких сСлСкторов Π² CSS Π½Π΅ добавляСт, Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ сСмантичСскиС сСлСкторы ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ примСси, пСрСдавая ΠΈΠΌ настройки сСтки. Настройки ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ вынСсСны Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ($grid-columns: 12; ΠΈ $grid-gutter-width: 30px;).

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΆΠΈΠ²ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ с codepen.io.

Π‘Π»ΠΎΠΊΠΈ

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π±Π»ΠΎΠΊ Π»Π΅ΠΆΠΈΡ‚ Π² ./src/blocks/ Π² своСй ΠΏΠ°ΠΏΠΊΠ΅. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π±Π»ΠΎΠΊ β€” ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ, ΠΏΠ°ΠΏΠΊΠ° ΠΈ ΠΎΠ΄Π½ΠΎΠΈΠΌΡ‘Π½Π½Ρ‹Π΅ scss- ΠΈ pug-Ρ„Π°ΠΉΠ».

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ содСрТимоС Π±Π»ΠΎΠΊΠ°:

demo-block/               # Папка блока.
  img/                    # Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π±Π»ΠΎΠΊΠΎΠΌ ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠΊΠΎΠΉ сборки.
  bg-img/                 # Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡ для использования Π² стилях (Π½Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠΊΠΎΠΉ сборки).
  demo-block.pug          # Π Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ° (pug-ΠΏΡ€ΠΈΠΌΠ΅ΡΡŒ, ΠΎΡ‚Π΄Π°ΡŽΡ‰Π°Ρ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΡƒ Π±Π»ΠΎΠΊΠ°, описаниС API примСси).
  demo-block.scss         # Π‘Ρ‚ΠΈΠ»Π΅Π²ΠΎΠΉ Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠ°.
  demo-block.js           # js-Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠ°.
  demo-block--mod.scss    # ΠžΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ стилСвой Ρ„Π°ΠΉΠ» Π‘Π­Πœ-ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Π±Π»ΠΎΠΊΠ°.
  demo-block--mod.js      # js-Ρ„Π°ΠΉΠ» для ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π‘Π­Πœ-ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Π±Π»ΠΎΠΊΠ°.
  readme.md               # ОписаниС для Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, подсказки.

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΎΠ²

Бписок ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ² ΠΈ Π΄ΠΎΠΏ. Ρ„Π°ΠΉΠ»ΠΎΠ² ΡƒΠΊΠ°Π·Π°Π½ Π² ./projectConfig.json. Бписок Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΏΠ°ΠΏΠΎΠΊ, взятых Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅, Ссли Ρ€Π°ΡΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ строку console.log(lists); Π² gulpfile.js.

Π’ΠΠ˜ΠœΠΠΠ˜Π•! ./projectConfig.json β€” это JSON. Π­Ρ‚ΠΎ строгий синтаксис, Ρƒ послСднСго элСмСнта Π² любом контСкстС Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ запятой Π² ΠΊΠΎΠ½Ρ†Π΅ строки.

blocks

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ с Π±Π»ΠΎΠΊΠ°ΠΌΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π±Π»ΠΎΠΊ β€” ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ ΠΏΠ°ΠΏΠΊΠ° с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π»Π΅ΠΆΠ°Ρ‚ Π² ./src/blocks/.

КаТдоС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠ° β€” массив, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ пустым ΠΈΠ»ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ элСмСнтов ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ², Ссли ΠΎΠ½ΠΈ написаны Π² Π²ΠΈΠ΄Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ². Π’ ΠΎΠ±ΠΎΠΈΡ… случаях Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π±ΡƒΠ΄ΡƒΡ‚ взяты ΠΎΠ΄Π½ΠΎΠΈΠΌΠ΅Π½Π½Ρ‹Π΅ стилСвыС Ρ„Π°ΠΉΠ»Ρ‹, pug-Ρ„Π°ΠΉΠ», js-Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ ΠΈΠ· ΠΏΠ°ΠΏΠΊΠΈ img/ Π±Π»ΠΎΠΊΠ°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ 3 Π±Π»ΠΎΠΊΠ°:

"blocks": {
  "page": [],
  "page-header": [],
  "page-footer": []
}

addCssBefore

Массив с Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ стилСвыми Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ взяты Π² ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ ΠŸΠ•Π Π•Π” стилСвыми Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π±Π»ΠΎΠΊΠΎΠ².

ΠŸΡ€ΠΈΠΌΠ΅Ρ€, Π±Π΅Ρ€ΡƒΡ‰ΠΈΠΉ Π² ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, примСси, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΎΠ΄ΠΈΠ½ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΈΠ· ΠΏΠ°ΠΏΠΊΠΈ зависимостСй (ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ Π² css-ΠΈΠΌΠΏΠΎΡ€Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈ постпроцСссингС (postcss-import) Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΌΠ΅Π½Π΅Π½ Π½Π° содСрТимоС Ρ„Π°ΠΉΠ»Π°).

"addCssBefore": [
  "./src/scss/variables.scss",
  "./src/scss/mixins.scss",
  "./src/scss/functions.scss",
  "../../node_modules/owl.carousel/dist/assets/owl.carousel.css"
],

addCssAfter

Массив с Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ стилСвыми Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ взяты Π² ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ ΠŸΠžΠ‘Π›Π• стилСвых Ρ„Π°ΠΉΠ»ΠΎΠ² Π±Π»ΠΎΠΊΠΎΠ².

"addCssAfter": [
  "./src/scss/print.scss"
],

singleCompiled

Массив стилСвых Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ скомпилированы нСзависимо.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π±ΡƒΠ΄Π΅Ρ‚ скомпилирован Π² ΠΏΠ°ΠΏΠΊΡƒ сборки ΠΊΠ°ΠΊ blocks-library.css

"singleCompiled": [
  "./src/scss/blocks-library.scss"
],

addJsBefore

Массив js-Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ взяты Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ (конкатСнация/сТатиС) ΠŸΠ•Π Π•Π” js-Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π±Π»ΠΎΠΊΠΎΠ².

ΠŸΡ€ΠΈΠΌΠ΅Ρ€, Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Π² список ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… js-Ρ„Π°ΠΉΠ»ΠΎΠ² нСсколько зависимостСй:

"addJsBefore": [
  "./node_modules/jquery/dist/jquery.min.js",
  "./node_modules/jquery-migrate/dist/jquery-migrate.min.js",
  "./node_modules/nouislider/distribute/nouislider.js"
],

addJsAfter

Массив js-Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ взяты Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ (конкатСнация/сТатиС) ΠŸΠžΠ‘Π›Π• js-Ρ„Π°ΠΉΠ»ΠΎΠ² Π±Π»ΠΎΠΊΠΎΠ².

ΠŸΡ€ΠΈΠΌΠ΅Ρ€, Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Π² ΠΊΠΎΠ½Π΅Ρ† списка ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… js-Ρ„Π°ΠΉΠ»ΠΎΠ² Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ скрипт.

"addJsAfter": [
  "./src/js/global-script.js"
],

addImages

Массив Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, добавляСмый ΠŸΠ•Π Π•Π” массивом ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ· Π±Π»ΠΎΠΊΠΎΠ² (Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΏΡ€ΠΈ совпадСнии ΠΈΠΌΠ΅Π½ Ρ„Π°ΠΉΠ»ΠΎΠ², Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· Π±Π»ΠΎΠΊΠΎΠ² ΠΈΠΌΠ΅ΡŽΡ‚ Π±ΠΎΠ»Π΅Π΅ высокий ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ ΠΈ Π·Π°Ρ‚Ρ€ΡƒΡ‚ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· этого массива).

"addImages": [
  "./src/img/*.{jpg,jpeg,gif,png,svg,ico}"
],

copiedCss

Массив css-Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² ΠΏΠ°ΠΏΠΊΡƒ сборки, ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΊΡƒ css/

copiedJs

Массив js-Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² ΠΏΠ°ΠΏΠΊΡƒ сборки, ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΊΡƒ js/

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ./projectConfig.json

{
  "blocks": {
    "page-header": [],
    "page-footer": [
      "__extra-element",
      "--extra-modifier"
    ]
  },
  "addCssBefore": [
    "./src/scss/variables.scss"
  ],
  "addCssAfter": [
    "./src/scss/print.scss"
  ],
  "singleCompiled": [],
  "addJsBefore": [
    "./node_modules/jquery/dist/jquery.min.js",
    "./node_modules/jquery-migrate/dist/jquery-migrate.min.js"
  ],
  "addJsAfter": [
    "./src/js/global-script.js"
  ],
  "addImages": [
    "./src/img/*.{jpg,jpeg,gif,png,svg}"
  ],
  "copiedCss": [],
  "copiedJs": [],
  "dirs": {
    "srcPath": "./src/",
    "buildPath": "./build/",
    "blocksDirName": "blocks"
  }
}

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π±ΡƒΠ΄ΡƒΡ‚ взяты (Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ):

css:
 [ './src/scss/variables.scss',
   './src/blocks/page-header/page-header.scss',
   './src/blocks/page-footer/page-footer.scss',
   './src/blocks/page-footer/page-footer__extra-element.scss',
   './src/blocks/page-footer/page-footer--extra-modifier.scss',
   './src/scss/print.scss' ],
js:
 [ './node_modules/jquery/dist/jquery.min.js',
   './node_modules/jquery-migrate/dist/jquery-migrate.min.js',
   './src/blocks/page-header/page-header.js',
   './src/blocks/page-footer/page-footer.js',
   './src/blocks/page-footer/page-footer__extra-element.js',
   './src/blocks/page-footer/page-footer--extra-modifier.js',
   './src/js/global-script.js' ],
img:
 [ './src/img/*.{jpg,jpeg,gif,png,svg}',
   './src/blocks/page-header/img/*.{jpg,jpeg,gif,png,svg}',
   './src/blocks/page-footer/img/*.{jpg,jpeg,gif,png,svg}' ]
pug:
 [ './src/blocks/page-header/page-header.pug',
   './src/blocks/page-footer/page-footer.pug' ]

УдобноС созданиС нового блока

ΠŸΡ€Π΅Π΄ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° для быстрого создания Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ структуры Π½ΠΎΠ²ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ: scss- ΠΈ pug-Ρ„Π°ΠΉΠ», readme.md Π±Π»ΠΎΠΊΠ° ΠΈ Π΅Π³ΠΎ ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΊΠΈ img ΠΈ bg-img

# Ρ„ΠΎΡ€ΠΌΠ°Ρ‚: node createBlock.js Π˜ΠœΠ―Π‘Π›ΠžΠšΠ [Π΄ΠΎΠΏ. Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€ΠΎΠ±Π΅Π»]
node createBlock.js block-test # создаст ΠΏΠ°ΠΏΠΊΡƒ Π±Π»ΠΎΠΊΠ°, block-test.pug, block-test.scss, ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΊΠΈ img/ ΠΈ bg-img/ для этого Π±Π»ΠΎΠΊΠ°

Если Π±Π»ΠΎΠΊ ΡƒΠΆΠ΅ сущСствуСт, Ρ„Π°ΠΉΠ»Ρ‹ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°Ρ‚Ρ‘Ρ€Ρ‚Ρ‹, Π½ΠΎ создадутся Ρ‚Π΅ Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅Ρ‰Ρ‘ Π½Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚.

НазначСниС ΠΏΠ°ΠΏΠΎΠΊ

build/          # Папка сборки, здСсь Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ сСрвСр Π°Π²Ρ‚ΠΎΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ.
src/            # Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹.
  blocks/       # - Π±Π»ΠΎΠΊΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.
  css/          # - Π΄ΠΎΠ±Π°Π²ΠΎΡ‡Π½Ρ‹Π΅ css-Ρ„Π°ΠΉΠ»Ρ‹ (Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² copiedCss, ΠΈΠ½Π°Ρ‡Π΅ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ).
  favicon/      # - Ρ„Π°ΠΉΠ»Ρ‹ для Ρ„Π°Π²ΠΈΠΊΠΎΠ½ΠΎΠΊ ΠΈ смСТных Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ.
  fonts/        # - ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (Π±ΡƒΠ΄ΡƒΡ‚ автоматичСски скопированы Π² ΠΏΠ°ΠΏΠΊΡƒ сборки).
  img/          # - Π΄ΠΎΠ±Π°Π²ΠΎΡ‡Π½Ρ‹Π΅ ΠΈΠ»ΠΈ ΠΎΠ±Ρ‰ΠΈΠ΅ для Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π±Π»ΠΎΠΊΠΎΠ² ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ (Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² addImages, ΠΈΠ½Π°Ρ‡Π΅ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ).
  js/           # - Π΄ΠΎΠ±Π°Π²ΠΎΡ‡Π½Ρ‹Π΅ js-Ρ„Π°ΠΉΠ»Ρ‹ (Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² addJsBefore, addJsAfter ΠΈΠ»ΠΈ copiedJs, ΠΈΠ½Π°Ρ‡Π΅ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ).
  pug/          # - примСси, ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ pug.
  scss/         # - стили (Ρ„Π°ΠΉΠ» style.scss скомпилируСтся, ΠΏΡ€ΠΎΡ‡ΠΈΠ΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² addCssBefore, addCssAfter ΠΈΠ»ΠΈ singleCompiled, ΠΈΠ½Π°Ρ‡Π΅ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ).
  index.pug     # - главная страница ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.
  blocks-demo.pug # - Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π±Π»ΠΎΠΊΠΎΠ².

About

Startkit for HTML / CSS / JS pages layout.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • HTML 38.0%
  • CSS 35.8%
  • JavaScript 26.2%