Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

enb-magic-platform #450

Open
Guria opened this issue Jun 9, 2015 · 10 comments
Open

enb-magic-platform #450

Guria opened this issue Jun 9, 2015 · 10 comments

Comments

@Guria
Copy link

Guria commented Jun 9, 2015

Продолжаю погружение.
Давно мучает вопрос, что именно делает enb-magic-platform.
Какова его роль в bem-core/bem-components.
Должен ли я его хотеть для своей библиотеки.

@qfox
Copy link

qfox commented Jun 9, 2015

/cc @blond

@blond
Copy link

blond commented Jun 9, 2015

@Guria, если совсем вкратце, то само по себе ENB умеет собирать только ноды, которые уже есть на файловой системе, и не умеет ноды, которые могут появляться в процессе сборки.

Для того, чтобы это стало возможным был написан enb-magic-fatory. Если нужно подробнее — можно попробовать разобраться по jsdoc внутри, или спрашивать тут.

А enb-magic-platform это тот же make + server из ENB, но который умеет работать со специальными __magic__ тасками, а если надо деградировать до обычных задач сборки.

enb-magic-fatory используется в пакетах, где нужно собирать сеты (sets), а именно в:

  • enb-bem-examples
  • enb-bem-specs
  • enb-bem-tmpl-specs
  • enb-bem-docs.

Поэтому enb-magic-platform нужен там, где используются эти пакеты.

@Guria
Copy link
Author

Guria commented Jun 9, 2015

Как минимум enb-bem-specs, enb-bem-tmpl-specs было желание использовать.
Придётся разбираться, хотя пока не очень легко даётся.

@blond
Copy link

blond commented Jun 9, 2015

@Guria Для того, чтобы использовать enb-bem-specs и enb-bem-tmpl-specs — разбираться в enb-magic-* пакетах не нужно.

Как использовать:

$ magic --help

ENB magic platform

Usage:
  magic COMMAND [OPTIONS] [ARGS]
  magic [OPTIONS] [ARGS]

Commands:
  make : build specified targets
  run : run specified tasks
  server : run development server

Options:
  -h, --help : Help
  -v, --version : version

@apsavin
Copy link

apsavin commented Jun 9, 2015

ENB умеет собирать только ноды, которые уже есть на файловой системе, и не умеет ноды, которые могут появляться в процессе сборки.

@blond, а когда я в make объявляю технологию с выходом в таргет N и технологию, для которой вход - это N, а выход - M - это разве не сборка нод, которые появляются в процессе сборки? Или я что-то неправильно понимаю?

@blond
Copy link

blond commented Jun 9, 2015

@apsavin, ты говоришь о сборке таргетов в рамках уже существующей ноды. И какие ноды, и какие таргеты будут в итоге известно до момента сборки.

Речь, о:

  1. На вход уровни переопределения.
  2. По ним генерируем сеты. Это и есть эти ноды, которые появляются в процессе сборки.
  3. Собираем таргеты в этих нодах.

Пример, из жизни:

  1. Уровни переопределения с md-файлами. В md-файлах есть инлайновые примеры (вставки BEMJSON кода).
  2. На выход хочется получить сеты с собранными примерами.
  3. Имена для инлайновых примеров — хэш-сумма от их содержимого.
  4. До момента сборки не извесно, о том какие ноды существуют, потому что не извесно какие примеры записаны в md-файлах.

Но, если в консоли написать следующее:

$ magic make desktop.examples/button/kv8lnJvLGr2co198HaREk26qsgQ/kv8lnJvLGr2co198HaREk26qsgQ.bemjson.js

То всё хорошо соберётся:

desktop.examples/
    button/
        kv8lnJvLGr2co198HaREk26qsgQ/kv8lnJvLGr2co198HaREk26qsgQ.bemjson.js

Если при этом в make.js задекларировать сборку нод *.examples/*/* как сборку обычных страниц, то в примерах соберётся не только BEMJSON, но и HTML, css, js и т.д.

@apsavin
Copy link

apsavin commented Jun 9, 2015

Понятно, спасибо.
В самом деле magic.

@Guria
Copy link
Author

Guria commented Jun 11, 2015

@blond enb-bem-specs и enb-bem-tmpl-specs поставляются со своим nodeconfigurator. Можно ли использовать эти модули если у меня процесс сборки немного отличается?

@blond
Copy link

blond commented Jun 11, 2015

Подозреваю, что для enb-bem-tmpl-specs можно, а для enb-bem-specs нельзя.

@Guria, но уточни, пожалуйста, в чём нужна кастомизация.

@Guria
Copy link
Author

Guria commented Jun 11, 2015

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants