Skip to content

Loading…

Возможность создавать bemjson.js из YAML файлов #304

Closed
wants to merge 53 commits into from

9 participants

@narqo
Block, Element, Modifier member
# page.bundles/index/index.bemtree.yml

- block: i-global
  params:
    id: my-prj
    region: ru

- block: b-page
  title: Заголовок
  head:
    - { elem: css, url: _index.css, ie: false }
    - { elem: css, url: _index, ie: true }
    - { block: i-jquery, elem: core }
    - { elem: js, url: _index.js }
  content:
    block: i-example
    js: true
   content: |
     После того как тема сформулирована, гелиоцентрическое 
     расстояние представляет собой экватор
› bem create -l page.bundles -b index -T bemjson.js
› cat page.bundles/index/index.bemjson.js

[
 {
   "block": "i-global",
   "params": {
     "id": "my-prg",
     "region": "ru"
  },
  ....
]

/cc: @arikon @veged

arikon and others added some commits
@arikon arikon Add util.uniq() generator of callbacks for [].reduce() bbc1e24
@arikon arikon Add ability to customize build rules more flexibly by providing Arch.…
…createCustomNode() method
967fc34
@scf2k scf2k Tests bem-bl submodule is updated to 0.2 (close #264)
- tests bem-bl updated
- tests fixed to inherit i18n.js from js-i to build files with include directives (close #265)
d2c9378
@arikon arikon js+coffee and js+coffee-i tech modules
- Add `js+coffee` and `js+coffee-i` tech modules
- Refactor `js` and `js-i` tech modules
- BundleNode: Use `js+coffee` tech instead of `js` for `BorschikNode` of `js` techs by default
- package: Depends on `coffee-script` and `borschik ~0.0.13`
- tests: Update `bem-bl 0.2` (`i18n.js` tech module)
- tests: Use `js+coffee-i` as `js` tech to build bundles
6496475
@arikon arikon Some more tuning and jsdoc 38ad9fa
@arikon arikon Fix link e6c0472
@scf2k scf2k README is splat into several files 5188ada
@arikon arikon Add level config with `md` tech for `docs/` 900f375
@arikon arikon Merge pull request #273 from bem/doc-split
`README` is splat into several files in `docs/`
0862340
@banzalik banzalik Update README.ru.md
опечатка помошью -> помощью
6e4261c
@vithar vithar Merge pull request #275 from banzalik/patch-4
Update README.ru.md
ae962ab
@arikon arikon GitLibraryNode: Fix checkout of the last commit
There was an error checking out last commit of the branch:

- checkout of repos with only one commit didn't work
- checkout of branch was touching files from the last commit, it was affecting build processes, as these files was always updated
63085e5
@arikon arikon Refactor of require() function in `.bem/make.js` files, it is now ful…
…ly context aware
627a043
@arikon arikon Refactor of require() function in declaration files, it is now fully …
…context aware
957e6ba
@arikon arikon util: Introduce `isFileValid()` and `itTimeValid()` convenient utilit…
…y functions

The are used in `bem-www` `.bem/make.js`, for example
e661144
@apsavin apsavin Docs fix: bemhtml.js -> bemhtml dd04050
@arikon arikon Merge pull request #276 from apsavin/docs-fix
Docs fix: bemhtml.js -> bemhtml
1ae120b
@arikon arikon Create node_modules/bem -> .. symlink on module install (Close #277) 3465a50
@arikon arikon Do not make symlink on Travis build run a9df6d4
@arikon arikon Merge branch 'master' into bem-www 96ad172
@arikon arikon Add .editorconfig (Close #278) 76b2e3f
@arikon arikon Add .editorconfig: order is necessary 1a71658
@arikon arikon Refactor Tech: introduce getBuildSuffixesMap() 9437f53
@arikon arikon Add match*() methods to `simple` level prototype, add tests (Close #282) f71cfdf
@arikon arikon Merge pull request #279 from bem/suffixes-map
Refactor Tech: introduce getBuildSuffixesMap()
29a56f1
@arikon arikon Merge branch 'master' into js+coffee 544b332
@arikon arikon Simplify coffee+js.js tech (Ref bem/bem-tools#279) af3b367
@arikon arikon Use latest bem-bl with updated i18n.js.js tech to reflect changes in …
…coffee+js.js tech
d7b2463
@arikon arikon Use latest xjst and ometajs to fix tests
- Small cleanup of `js+coffee.js` code
- Use updated `bem-bl`
- Canonize new reference test results
3cf8e1c
@arikon arikon Merge pull request #268 from bem/js+coffee
js+coffee and js+coffee-i tech modules
1976f0a
@arikon arikon Fix recursion error when build target name contain trailing slash (Cl…
…ose #252)
0959280
@arikon arikon Merge pull request #272 from bem/bem-www
Arch: Add ability to customize build rules more flexibly
2e67364
@arikon arikon Add `dir` tech module 5576819
@arikon arikon Merge pull request #290 from bem/dir-tech
Tech module to create directories
c083230
@vithar vithar Simple index page added 507458a
@vithar vithar markdown list markup fixed 39e951d
@arikon arikon Replace own `util.extend()` implementation with `node.extend` module 07e5874
@tadatuta tadatuta combine bem commands documentation d30c80e
@tadatuta tadatuta Doc: Update index page to fit new doc structure f11c19d
@arikon arikon Fix jsdoc in util 98cd788
@arikon arikon Slightly refactor `bem create level` command
- Move validation of level prototype logic to the `COA.Opt.val()` method
- More promisy-based code
- Code cleanup
- Updated reference legacy-tests results
03c376a
@arikon arikon Use promisy function to write level .js module fdd8a64
@arikon arikon Add ability to `bem create level` command to create level .js modules ed29eef
@arikon arikon Use coa ~0.3.6 e46ebd2
@arikon arikon Fix jsdoc of util.exec(): `options` and `resolveWithOutput` are optio…
…nal arguments
9623bdd
@arikon arikon Fix jsdoc on util.relative(): mark `dot` argument as optional 0adab98
@arikon arikon Add util.bemParseKey() function and tests dbdf857
@arikon arikon Add `.bem` and `node_modules` to `Level.isIgnorablePath()` 97e13d4
@arikon arikon Fix jsdoc of `Tech.getPath()` and `Tech.getPaths()` methods: mark `su…
…ffix` and `suffixes` arguments as optional
f3f0935
@scf2k scf2k Git library checkout fixed to work with commit hashes (close #302)
Parameter branch is added to specify branch name. Use treeish to specify
commit or tag.
9b3bd6b
@narqo narqo Ability to create bemjson.js from YAML source 59ece66
@narqo narqo bemjson.js tech renamed e2f3bfd
@narqo narqo Use soft dependency for js-yaml f5fbb17
@narqo
Block, Element, Modifier member

Заставить работать это с bem make / server сейчас не получится — в lib/nodes/level.js зашита сборка страниц содержащих bemjson.js либо bemdecl.js источников.

@zxqfox
Block, Element, Modifier member

А если перед поиском bemjson.js его успеть собрать из yaml ?

@arikon
Block, Element, Modifier member

@narqo Если мы делаем технологию bemjson.js частью bem-tools, значит нужно соответствующим образом поправить lib/nodes/level.js.

Вот только меня смущает использование именно YAML. А почему не CoffeeScript? И если будут люди, хотящие разного?

@narqo
Block, Element, Modifier member

@arikon Про level.js я как раз написал предложение: 61bfe62#commitcomment-2115221

Есть идея отказаться от технологии bemjson в пользу технологий bemtree.yml, bemtree.js и bemtree.xml, каждая из которых позволит описывать страницу на нужном языке разметки.

@zxqfox Сейчас bem make вообще не признает директорию за бандл, если там нет bemjson.js либо bemdecl.js технологий.

@arikon
Block, Element, Modifier member

@narqo Можешь реализовать это предложение в этом pull request?

Как изменится flow сборки с учётом этих технологий?

@narqo
Block, Element, Modifier member

@arikon Хотелось бы, чтобы процесс сборки изменился минимально:

bemtree.* ➝ bemdecl.js ➝ deps.js

В процессе bem create -t bemdecl.js [..] мы могли бы проверять наличие одной из bemtree.* технологий и создавать декларацию в зависимости от того, что «пришло на вход»

@arikon
Block, Element, Modifier member

мы могли бы проверять наличие одной из bemtree.* технологий

Надо пробовать вписать это в логику bem make, там всё не так просто. Технология сейчас может зависеть однозначно от других технологий. Вариативности тут быть не может.

@zxqfox
Block, Element, Modifier member

@arikon так пусть технология называется bemtree.js, а файлы будет собирать разные, или технология = файл для сборки? похоже, действительно проще попробовать и понять, чего не хватает. лиж бы не получилось слишком сложно ;-). Совокупный объем сущностей и алгоритмов, составляющих реализацию и методологию БЭМ, сам по себе не мал, постарайтесь не сильно усложнять, пожалуйста. Multum in parvo, да?

@arikon
Block, Element, Modifier member

@zxqfox Сейчас модуль технологии экспортирует функцию getDependencies(), которая возвращает список технологий-зависимостей. И bem make использует эту информацию для построения графа правил сборки.

@zxqfox
Block, Element, Modifier member

@arikon Т.е., перед тем, как начинать это делать, надо придумать как передавать варианты, желательно с приоритетом, и научить build.js выбирать один из имеющихся вариантов? Местами синхронный код попадается, может быть [['bemjson.js','bemtree.*'], 'someothertech.js'] в таком случае ок? Такое может возвращать метод getDependencies, старый код не сломается — строки будут работать как и раньше, а из массивов в build.js и create.js будет выбираться первый вариант, можно и без '.*' с явным перечислением.
Правда, в таком случае мне не очень нравится, что спрашивать диск при поиске подходящего варианта придется синхронно.

@arikon
Block, Element, Modifier member

@zxqfox Дело в том, что getDependencies() сейчас вызывается не для каждой собираемой страницы, а однажды вне контекста страницы. То есть сейчас это статический массив, и все элементы этого массивы будут представлены зависимостями собираемой ноды. В общем, чтобы это сделать, нужно пересмотреть механизм вычисления списка зависимостей.

@narqo
Block, Element, Modifier member

А этот функционал еще не планируется отправить в 0.5.x?

Block, Element, Modifier member

@narqo Я думаю, что это будет в следующих версиях (0.6.x или 0.7.x).
А тебе для чего?

Block, Element, Modifier member

@arikon Нужно для демки в project-stub перед webconf.lv, а в ветке introspect нет патчей про q

@arikon arikon commented on the diff
lib/techs/bemjson.js.js
((42 lines not shown))
+
+ case 'bemtree.yml':
+ result = convertYAML(content, vars);
+ break;
+
+ case 'bemtree.js':
+ result = convertJS(content, vars);
+ break;
+
+ default:
+ result = Q.resolve('');
+
+ }
+
+ } catch(e) {
+ throw e;
@arikon Block, Element, Modifier member
arikon added a note

Для чего здесь try {} catch {}, если в catch происходит просто throw без какой-либо обработки?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
@arikon
Block, Element, Modifier member

@narqo Попробуешь сделать так, чтобы оно в bem make собиралось правильно в разных ситуациях?

Ситуации такие:

  • есть *.bemtree.yml файл
  • есть *.bemtree.js файл
  • есть *.bemdecl.js файл
@bashmish

В итоге решили отказаться от этой идеи?

@arikon
Block, Element, Modifier member

@bashmish Не доходят руки

@narqo narqo closed this
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Commits on Sep 26, 2012
  1. @arikon
  2. @arikon

    Add ability to customize build rules more flexibly by providing Arch.…

    arikon committed
    …createCustomNode() method
Commits on Sep 27, 2012
  1. @scf2k

    Tests bem-bl submodule is updated to 0.2 (close #264)

    scf2k committed
    - tests bem-bl updated
    - tests fixed to inherit i18n.js from js-i to build files with include directives (close #265)
  2. @arikon

    js+coffee and js+coffee-i tech modules

    arikon committed
    - Add `js+coffee` and `js+coffee-i` tech modules
    - Refactor `js` and `js-i` tech modules
    - BundleNode: Use `js+coffee` tech instead of `js` for `BorschikNode` of `js` techs by default
    - package: Depends on `coffee-script` and `borschik ~0.0.13`
    - tests: Update `bem-bl 0.2` (`i18n.js` tech module)
    - tests: Use `js+coffee-i` as `js` tech to build bundles
Commits on Sep 29, 2012
  1. @arikon

    Some more tuning and jsdoc

    arikon committed
Commits on Oct 3, 2012
  1. @arikon

    Fix link

    arikon committed
  2. @scf2k
  3. @arikon
  4. @arikon

    Merge pull request #273 from bem/doc-split

    arikon committed
    `README` is splat into several files in `docs/`
Commits on Oct 5, 2012
  1. @banzalik

    Update README.ru.md

    banzalik committed
    опечатка помошью -> помощью
  2. @vithar

    Merge pull request #275 from banzalik/patch-4

    vithar committed
    Update README.ru.md
Commits on Oct 6, 2012
  1. @arikon

    GitLibraryNode: Fix checkout of the last commit

    arikon committed
    There was an error checking out last commit of the branch:
    
    - checkout of repos with only one commit didn't work
    - checkout of branch was touching files from the last commit, it was affecting build processes, as these files was always updated
  2. @arikon
  3. @arikon
  4. @arikon

    util: Introduce `isFileValid()` and `itTimeValid()` convenient utilit…

    arikon committed
    …y functions
    
    The are used in `bem-www` `.bem/make.js`, for example
Commits on Oct 7, 2012
  1. @apsavin
Commits on Oct 8, 2012
  1. @arikon

    Merge pull request #276 from apsavin/docs-fix

    arikon committed
    Docs fix: bemhtml.js -> bemhtml
  2. @arikon
Commits on Oct 9, 2012
  1. @arikon
  2. @arikon
Commits on Oct 15, 2012
  1. @arikon

    Add .editorconfig (Close #278)

    arikon committed
  2. @arikon
  3. @arikon
  4. @arikon
Commits on Oct 16, 2012
  1. @arikon

    Merge pull request #279 from bem/suffixes-map

    arikon committed
    Refactor Tech: introduce getBuildSuffixesMap()
  2. @arikon
  3. @arikon
  4. @arikon
  5. @arikon

    Use latest xjst and ometajs to fix tests

    arikon committed
    - Small cleanup of `js+coffee.js` code
    - Use updated `bem-bl`
    - Canonize new reference test results
  6. @arikon

    Merge pull request #268 from bem/js+coffee

    arikon committed
    js+coffee and js+coffee-i tech modules
  7. @arikon
Commits on Oct 17, 2012
  1. @arikon

    Merge pull request #272 from bem/bem-www

    arikon committed
    Arch: Add ability to customize build rules more flexibly
  2. @arikon

    Add `dir` tech module

    arikon committed
  3. @arikon

    Merge pull request #290 from bem/dir-tech

    arikon committed
    Tech module to create directories
  4. @vithar

    Simple index page added

    vithar committed
  5. @vithar

    markdown list markup fixed

    vithar committed
Commits on Oct 19, 2012
  1. @arikon
  2. @tadatuta
  3. @tadatuta
  4. @arikon

    Fix jsdoc in util

    arikon committed
  5. @arikon

    Slightly refactor `bem create level` command

    arikon committed
    - Move validation of level prototype logic to the `COA.Opt.val()` method
    - More promisy-based code
    - Code cleanup
    - Updated reference legacy-tests results
  6. @arikon
  7. @arikon
Commits on Oct 20, 2012
  1. @arikon

    Use coa ~0.3.6

    arikon committed
  2. @arikon
  3. @arikon
Commits on Oct 24, 2012
  1. @arikon
Commits on Oct 26, 2012
  1. @arikon
  2. @arikon

    Fix jsdoc of `Tech.getPath()` and `Tech.getPaths()` methods: mark `su…

    arikon committed
    …ffix` and `suffixes` arguments as optional
Commits on Nov 5, 2012
  1. @scf2k

    Git library checkout fixed to work with commit hashes (close #302)

    scf2k committed
    Parameter branch is added to specify branch name. Use treeish to specify
    commit or tag.
Commits on Nov 6, 2012
  1. @narqo
  2. @narqo

    bemjson.js tech renamed

    narqo committed
  3. @narqo
Something went wrong with that request. Please try again.