ΠΠ»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π΄Π°Π½Π½ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΡΠ΅Π±Π΅ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ, Π° ΠΏΠΎΡΠ»Π΅ ΠΏΡΠΎΠΏΠΈΡΠ°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
npm iΠΠ»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΏΡΠΎΠΏΠΈΡΠΈΡΠ΅ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅ Π΄Π°Π½Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
npm run dev*ΠΡΠ»ΠΈ Ρ Π²Π°Ρ ΠΈΠΌΠ΅ΡΡΡΡ svg ΠΈΠΊΠΎΠ½ΠΊΠΈ Π² ΠΏΠ°ΠΏΠΊΠ΅ "svgicons", ΡΠΎ ΠΎΡΠΊΡΠΎΠΉΡΠ΅ Π΅ΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ΅ΡΠΌΠΈΠ½Π°Π» ΠΈ ΠΏΡΠΎΠΏΠΈΡΠΈΡΠ΅ Π΄Π°Π½Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
npm run svgSprive- ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΊ ΡΠ°Π±ΠΎΡΠ΅: ΡΡΡΡΠΊΡΡΡΠ° ΡΠ°ΠΉΠ»ΠΎΠ² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎ ΠΠΠ
- ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° [bem-tools-create]
- ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Html-ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° Pug
- ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Css-ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° Scss
- ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Webpack Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ javascript-ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ
- Π‘Π±ΠΎΡΠΊΠ° ΠΈΠΊΠΎΠ½ΠΎΠΊ Π² ΡΠΏΡΠ°ΠΉΡΡ: svg, png
- ΠΠΎΠ½Π²Π΅ΡΡΠ°ΡΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π² ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ Π²Π΅Π±-ΡΠΎΡΠΌΠ°Ρ webp
gulp-Webpack
|β build
|β gulp
|β src
| |β base
| | |β fonts.scss
| |β fonts
| | |β ***
| |β components
| | |β ***
| | |β ***
| | |β ***
| | |β app.js
| | |β classes.scss
| | |β normalize.scss
| | |β style.scss
| | |β vars.scss
| |β img
| | |β icons
| | | |β png
| | | |β svg
| | |β favicon-lg.png
| | |β favicon-sm.png
| |β layots
| | |β ***
| |β mixins
| | |β pug
| | |β sass
| |β svgicons
| | |β ***
| index.pug
| package.json
| gulpfile.js
| .bemrc.js
| .gitignore
- build β ΠΊΠΎΠ½Π΅ΡΠ½Π°Ρ ΠΏΠ°ΠΏΠΊΠ° Ρ Π²Π΅ΡΡΡΠΊΠΎΠΉ.
- gulp β Π·Π΄Π΅ΡΡ Π»Π΅ΠΆΠ°Ρ Π²ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ ΡΠ±ΠΎΡΡΠΈΠΊΠ° gulp
- src β ΠΏΠ°ΠΏΠΊΠ° Ρ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠ°ΠΌΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°
- package.json β ΡΠ°ΠΉΠ» Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΡΠΏΠΈΡΠΊΠ° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ
- gulpfile.js β ΡΠ°ΠΉΠ» Π½Π°ΡΡΡΠΎΠ΅ΠΊ Π΄Π»Ρ ΡΠ±ΠΎΡΡΠΈΠΊΠ° Gulp
- .bemrc.js β Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° bem-tools-create
- .gitignore β ΡΠΏΠΈΡΠΎΠΊ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ Π΄Π»Ρ Git
ΠΠ°ΠΆΠ΄ΡΠΉ Π±Π»ΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ²Π΅ΡΡΡΠ°ΡΡ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°. ΠΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π»Π΅ΠΆΠ°Ρ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ src/components. ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ 3 ΡΠΈΠΏΠ° ΡΠ°ΠΉΠ»Π° - .pug, .scss, .js (Π΅ΡΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΈΡΠ°ΡΡ ΡΠΊΡΠΈΠΏΡ Π½Π° js). ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ ΡΠ°ΠΉΠ»ΠΎΠ² ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°. ΠΡΠ΅ ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ Π΄Π»Ρ Π»Π΅Π³ΠΊΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΏΡΠΈ ΡΠ°ΠΊΠΎΠΌ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Π΅ Π»Π΅Π³ΠΊΠΎ ΠΊΠΎΠΏΠΈΡΡΡΡΡΡ ΠΈΠ· ΠΏΡΠΎΠ΅ΠΊΡΠ° Π² ΠΏΡΠΎΠ΅ΠΊΡ.
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΡΡΠΊΡΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° header Ρ Π΅Π³ΠΎ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ.
|β header
| |β header.pug
| |β header.scss
| |β header.js
| ***
| ***
Π€Π°ΠΉΠ»Ρ pug ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡΡΡ Π² ΡΠΎΠΌ ΡΠ°ΠΉΠ»Π΅, Π³Π΄Π΅ ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ.
Π€Π°ΠΉΠ»Ρ sass ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡΡΡ Π²ΡΡΡΠ½ΡΡ Π² ΡΠ°ΠΉΠ»Π΅ _components.sass, ΠΊΠΎΡΠΎΡΡΠΉ Π»Π΅ΠΆΠΈΡ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ src/components/.
Π€Π°ΠΉΠ»Ρ js ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡΡΡ Π²ΡΡΡΠ½ΡΡ Π² ΡΠ°ΠΉΠ»Π΅ components.js, ΠΊΠΎΡΠΎΡΡΠΉ Π»Π΅ΠΆΠΈΡ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ src/components/.
ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ bem-tools-create
Π§ΡΠΎΠ±Ρ Π² ΡΡΡΠ½ΡΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Π½Π΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ°ΠΉΠ»Ρ ΠΈ ΠΏΠ°ΠΏΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡΠΊΠΎΡΠΈΡΡ Π΄Π°Π½Π½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ.
ΠΠ΅ΡΠ²ΡΠΌ Π΄Π΅Π»ΠΎΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΠ»Π°Π³ΠΈΠ½ bem-tools-core Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎ, ΠΈΠ½Π°ΡΠ΅ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΡΠΈΠ±ΠΊΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° bem Π½Π΅ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π½Π°.
npm i bem-tools-core -g
ΠΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠΈΡΠ΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· Π΄Π»Ρ Π²ΡΠ΅Ρ
ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ². ΠΠΎΠ»ΡΡΠ΅ ΠΏΠΎΠ²ΡΠΎΡΡΡΡ Π½Π΅ Π½ΡΠΆΠ½ΠΎ.
ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ:
bem create component-name
Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ "component-name" - ΡΡΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°.
ΠΠΎΡΠ»Π΅ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ src/components ΠΏΠΎΡΠ²ΠΈΡΡΡ ΠΏΠ°ΠΏΠΊΠ° Ρ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ. Π ΠΏΠ°ΠΏΠΊΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠΎΠ·Π΄Π°ΡΡΡΡ 3 ΡΠΈΠΏΠ° ΡΠ°ΠΉΠ»Π° Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ - pug, scss, js. Π’ΠΎ Π΅ΡΡΡ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, component-name.pug, component-name.scss, component-name.js.
ΠΡΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΊΠ»ΡΡΠΈΡΡ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΡΠ°ΠΉΠ», ΡΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π΄Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
bem create component-name -n js
ΠΠΎΡΠ»Π΅ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ .pug ΠΈ .scss, js-ΡΠ°ΠΉΠ» Π±ΡΠ΄Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½.
ΠΡΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠΈΠΏ ΡΠ°ΠΉΠ»Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΠ»ΡΠΊΠΎ scss, ΡΠΎ ΠΏΠΈΡΠ΅ΠΌ:
bem create component-name -T scss
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΏΡΠΎ bem-tools-creators ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΈΡΠ°ΡΡ ΡΡΡ.
Π¨ΡΠΈΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡΡΡ Π² ΡΠ°ΠΉΠ»Π΅ src/base/scss/fonts.scss. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ ΡΡΠΈΡΡ Montserrat ΠΈΠ· google fonts. ΠΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΠΉΡΠ΅ ΡΡΠΈΡΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈΠ· google fonts.