Skip to content

tenorok/bemaker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Bemaker β€” сборщик Π‘Π­Πœ-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

Π‘Π­Πœ β€” это мСтодология эффСктивной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π‘ΠΎΠ»ΡŒΡˆΠΎΠ΅ количСство ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΎ Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ сайтС http://ru.bem.info.

Bemaker стрСмится Π²ΠΎΠΏΠ»ΠΎΡ‚ΠΈΡ‚ΡŒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ простой способ сборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² Π‘Π­Πœ-Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ….

Установка

npm install bemaker

Ѐайловая структура ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

Bemaker Π½Π΅ΠΏΡ€ΠΈΡ…ΠΎΡ‚Π»ΠΈΠ² ΠΊ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ структурС, насколько это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

Наряду с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, Π² сборкС Ρ‚Π°ΠΊ ΠΆΠ΅ ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽΡ‚ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ ссылки.

ΠžΠΆΠΈΠ΄Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ имССтся дирСктория, хранящая Π² сСбС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Π±Π»ΠΎΠΊΠΎΠ², Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Ρ„Π°ΠΉΠ»Ρ‹ Π±Π»ΠΎΠΊΠ° Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ.

НапримСр:

blocks/
    button/
        button.js
        button.css
    input/
        input.js
        input.css

Для указания Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ с Π±Π»ΠΎΠΊΠ°ΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ опция directories.

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹

Π’ ΠΈΠΌΠ΅Π½Π°Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² элСмСнтов ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ имя Π±Π»ΠΎΠΊΠ°, сборщик достроит Π΅Π³ΠΎ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ исходя ΠΈΠ· Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Π±Π»ΠΎΠΊΠ°.

НапримСр:

blocks/
    input/
        input.js
        __label.js     // input__label.js
        _size_s.css    // input_size_s.css

ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ„Π°ΠΉΠ»ΠΎΠ²

Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° рассчитываСтся вСс, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π² дальнСйшСм Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒΡΡ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Π΅Π³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ срСди ΠΏΡ€ΠΎΡ‡ΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² Π±Π»ΠΎΠΊΠ°.

ВСс Ρ„Π°ΠΉΠ»Π° рассчитываСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° weight модуля Selector Π‘Π­Πœ-ΡˆΠ°Π±Π»ΠΎΠ½ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° Bemer.

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅ порядок ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ„Π°ΠΉΠ»ΠΎΠ² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

  1. block
  2. block_mod
  3. block_mod_val
  4. block__elem
  5. block_mod__elem
  6. block_mod_val__elem
  7. block__elem_mod
  8. block__elem_mod_val
  9. block_mod__elem_mod_val
  10. block_mod_val__elem_mod_val

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования Π·Π²Ρ‘Π·Π΄ΠΎΡ‡Π΅ΠΊ вмСсто частСй Π‘Π­Πœ-ΠΈΠΌΡ‘Π½, Ρ‡Ρ‚ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ для выдСлСния ΠΎΠ±Ρ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π° Π² ΠΎΠ΄Π½ΠΎΠΌ мСстС. Π£ ΠΈΠΌΡ‘Π½ со Π·Π²Ρ‘Π·Π΄ΠΎΡ‡ΠΊΠ°ΠΌΠΈ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Π½ΠΈΠΆΠ΅, Ρ‡Π΅ΠΌ Ρƒ ΠΈΠΌΡ‘Π½ Π±Π΅Π· Π·Π²Ρ‘Π·Π΄ΠΎΡ‡Π΅ΠΊ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈΠΌΡ‘Π½ со Π·Π²Ρ‘Π·Π΄ΠΎΡ‡ΠΊΠ°ΠΌΠΈ: block_mod_*, block__* ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ Ρ„Π°ΠΉΠ»ΠΎΠ² Π±Π»ΠΎΠΊΠ°

Bemaker ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅Ρ‚ всС Ρ„Π°ΠΉΠ»Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Π±Π»ΠΎΠΊΠ° Π²Π½Π΅ зависимости ΠΎΡ‚ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ влоТСнности.

НапримСр, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΈ ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ элСмСнта ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Π² Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ:

blocks/
    input/
        input.js
        __label/
            __label.js
        _size/
            _size_s.css

Π£Ρ€ΠΎΠ²Π½ΠΈ пСрСопрСдСлСния

Π’ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСсколько Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ с Π±Π»ΠΎΠΊΠ°ΠΌΠΈ, Ρ‚ΠΎΠ³Π΄Π° эти Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ уровнями пСрСопрСдСлСния.

Бмысл Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ bemaker Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ Π±Π»ΠΎΠΊΠΎΠ² сначала с ΠΎΠ΄Π½ΠΎΠ³ΠΎ уровня, Π° Π·Π°Ρ‚Π΅ΠΌ со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΌ порядкС.

Π­Ρ‚ΠΎ позволяСт ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ порядок наслСдования скриптов ΠΈ пСрСопрСдСлСния стилСй Π±Π»ΠΎΠΊΠΎΠ².

НапримСр, Π±Π»ΠΎΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΎΠΆΠ΅Π½Ρ‹ ΠΏΠΎ уровням пСрСопрСдСлСния, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°ΠΌ устройств ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ:

common/              // общая рСализация Π±Π»ΠΎΠΊΠΎΠ²
    input/
        input.css
phone/               // уточнСния для Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ²
    input/
        input.css    // пСрСопрСдСляСм стили для Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ²

Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ зависимостСй

НСкоторыС Π±Π»ΠΎΠΊΠΈ основаны Π½Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π±Π»ΠΎΠΊΠΎΠ², для указания связСй ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ прСдусмотрСна Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ записи зависимостСй.

Зависимости Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² JSDoc-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ поиск зависимостСй осущСствляСтся Π² js-Ρ„Π°ΠΉΠ»Π°Ρ… ΠΈ Ρ‚Π΅Π³Π°Ρ… @bemaker, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π³Π΄Π΅-Π»ΠΈΠ±ΠΎ Π² JSDoc. Π’ ΠΎΠ΄Π½ΠΎΠΌ Ρ‚Π΅Π³Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Π±Π»ΠΎΠΊ.

НапримСр, Ρ„Π°ΠΉΠ» select.js Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π±Π»ΠΎΠΊ select зависит ΠΎΡ‚ Π±Π»ΠΎΠΊΠΎΠ² button ΠΈ popup:

/**
 * @bemaker button
 * @bemaker popup
 */

Для измСнСния Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Ρ„Π°ΠΉΠ»ΠΎΠ² с зависимостями ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ опция dependext.

Для измСнСния ΠΈΠΌΠ΅Π½ΠΈ JSDoc-Ρ‚Π΅Π³Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ опция jsdoctag.

ИспользованиС Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅

ПослС установки ΠΈΠ· npm Π±ΡƒΠ΄Π΅Ρ‚ доступСн исполняСмый Ρ„Π°ΠΉΠ»: ./node_modules/.bin/bemaker.

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹

Команда make

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ make запускаСтся сборка ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Для уточнСния Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ сборки ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΎΠΏΡ†ΠΈΠΈ.

ΠžΠΏΡ†ΠΈΠΈ

ΠžΠΏΡ†ΠΈΡ -h, --help

ВывСсти справку ΠΏΠΎ использованию bemaker Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅:

$ bemaker --help

ВывСсти справку ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ make:

$ bemaker make --help

ΠžΠΏΡ†ΠΈΡ -V, --version

ВывСсти ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ bemaker.

ΠžΠΏΡ†ΠΈΡ -c, --config <file=bemaker.json>

ΠžΠΏΡ†ΠΈΡ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», содСрТащий всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΎΠΏΡ†ΠΈΠΈ сборки Π² JSON-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅.

Если дирСктория, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ выполняСтся запуск ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, содСрТит Ρ„Π°ΠΉΠ» bemaker.json β€” сборщик ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ ΠΊΠ°ΠΊ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» автоматичСски.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ указываСтся ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ»:

$ bemaker make -c path/to/myconfig.json

Π’ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ ΠΏΡƒΡ‚ΠΈ Π΄ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² слСдуСт ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ располоТСния ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°.

ΠžΠΏΡ†ΠΈΠΈ, Π²Π²Π΅Π΄Ρ‘Π½Π½Ρ‹Π΅ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Π½Π°Π΄ опциями ΠΈΠ· ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°.

ΠžΠΏΡ†ΠΈΡ -d, --directories <dir,dirN>

ΠžΠΏΡ†ΠΈΡ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠ΄Π½Ρƒ ΠΈΠ»ΠΈ нСсколько Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ с Π±Π»ΠΎΠΊΠ°ΠΌΠΈ.

Π‘Π±ΠΎΡ€Ρ‰ΠΈΠΊ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ собСрёт Π±Π΅Π· указания располоТСния Π±Π»ΠΎΠΊΠΎΠ².

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π°Π΄Π°Ρ‘Ρ‚ сборку Π±Π»ΠΎΠΊΠΎΠ² ΠΈΠ· Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ common ΠΈ phone:

$ bemaker make -d common,phone

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅:

{
    "directories": ["common", "phone"]
}

ΠžΠΏΡ†ΠΈΡ -O, --outname <name>

ΠžΠΏΡ†ΠΈΡ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ имя сохраняСмых Ρ„Π°ΠΉΠ»ΠΎΠ².

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ„Π°ΠΉΠ»Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π±Π΅Π· ΠΈΠΌΠ΅Π½ΠΈ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π°Π΄Π°Ρ‘Ρ‚ сохраняСмым Ρ„Π°ΠΉΠ»Π°ΠΌ имя all:

$ bemaker make -O all

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅:

{
    "outname": "all"
}

ΠžΠΏΡ†ΠΈΡ -o, --outdir <dir=.>

ΠžΠΏΡ†ΠΈΡ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ для сохраняСмых Ρ„Π°ΠΉΠ»ΠΎΠ². Если указанная дирСктория Π½Π΅ сущСствуСт β€” ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ создана автоматичСски.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ„Π°ΠΉΠ»Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π°Π΄Π°Ρ‘Ρ‚ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ bundle для сохраняСмых Ρ„Π°ΠΉΠ»ΠΎΠ²:

$ bemaker make -o bundle

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅:

{
    "outdir": "bundle"
}

ΠžΠΏΡ†ΠΈΡ -e, --extensions <.ext,.extN>

ΠžΠΏΡ†ΠΈΡ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠ΄Π½ΠΎ ΠΈΠ»ΠΈ нСсколько Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ для сохраняСмых Ρ„Π°ΠΉΠ»ΠΎΠ².

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ всС Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π°Π΄Π°Ρ‘Ρ‚ ΠΊ ΡΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΡŽ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ .js ΠΈ .css:

$ bemaker make -e .js,.css

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅:

{
    "extensions": [".js", ".css"]
}

ΠžΠΏΡ†ΠΈΡ -b, --blocks <block,blockN>

ΠžΠΏΡ†ΠΈΡ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ имя ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π±Π»ΠΎΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² сборку Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ всС Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π°Π΄Π°Ρ‘Ρ‚ ΠΊ сборкС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±Π»ΠΎΠΊΠΈ button ΠΈ input:

$ bemaker make -b button,input

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅:

{
    "blocks": ["button", "input"]
}

ΠžΠΏΡ†ΠΈΡ --dependext <ext=.js>

ΠžΠΏΡ†ΠΈΡ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ², Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… сборщику слСдуСт ΠΈΡΠΊΠ°Ρ‚ΡŒ зависимости Π±Π»ΠΎΠΊΠΎΠ².

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ поиск зависимостСй осущСствляСтся Π² Ρ„Π°ΠΉΠ»Π°Ρ… с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ .js.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π°Π΄Π°Ρ‘Ρ‚ поиск зависимостСй Π² Ρ„Π°ΠΉΠ»Π°Ρ… .deps.js:

$ bemaker make --dependext .deps.js

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅:

{
    "dependext": ".deps.js"
}

ΠžΠΏΡ†ΠΈΡ --jsdoctag <tag=bemaker>

ΠžΠΏΡ†ΠΈΡ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ имя JSDoc-Ρ‚Π΅Π³Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ сборщику слСдуСт Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ зависимости Π±Π»ΠΎΠΊΠΎΠ².

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ зависимостСй осущСствляСтся Π² Ρ‚Π΅Π³Π΅ @bemaker.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π°Π΄Π°Ρ‘Ρ‚ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ зависимостСй Π² Ρ‚Π΅Π³Π΅ @deps:

$ bemaker make --jsdoctag deps

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅:

{
    "jsdoctag": "deps"
}

ΠžΠΏΡ†ΠΈΡ --no-before

ΠžΠΏΡ†ΠΈΡ отмСняСт установку коммСнтария ΠΏΠ΅Ρ€Π΅Π΄ содСрТимым ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² собранном Ρ„Π°ΠΉΠ»Π΅ ΠΏΠ΅Ρ€Π΅Π΄ содСрТимым ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° устанавливаСтся Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ:

/* before: blocks/button/button.css */

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ отмСняСт установку коммСнтария:

$ bemaker make --no-before

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅:

{
    "before": false
}

ΠžΠΏΡ†ΠΈΡ --no-after

ΠžΠΏΡ†ΠΈΡ отмСняСт установку коммСнтария послС содСрТимого ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² собранном Ρ„Π°ΠΉΠ»Π΅ послС содСрТимого ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° устанавливаСтся Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ:

/* after: blocks/button/button.css */

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ отмСняСт установку коммСнтария:

$ bemaker make --no-after

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅:

{
    "after": false
}

ΠžΠΏΡ†ΠΈΡ -v, --verbose <mod,modN>

Π’ процСссС сборки выводятся Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ сообщСний.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ выводятся всС Ρ‚ΠΈΠΏΡ‹ сообщСний. ΠžΠΏΡ†ΠΈΡ verbose позволяСт Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ².

Π’Ρ‹Π²ΠΎΠ΄ΠΈΠΌΡ‹Π΅ сообщСния дСлятся Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹:

  1. log β€” информация ΠΎ процСссС сборки (синим Ρ†Π²Π΅Ρ‚ΠΎΠΌ)
  2. info β€” сообщСниС ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ сборки (Π·Π΅Π»Ρ‘Π½Ρ‹ΠΌ)
  3. warn β€” прСдупрСТдСния (ΠΆΡ‘Π»Ρ‚Ρ‹ΠΌ)
  4. error β€” ошибки (красным)

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ прСдупрСТдСния ΠΈ ошибки:

$ bemaker make -v warn,error

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠΏΡ†ΠΈΠΈ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅:

{
    "verbose": ["warn", "error"]
}