История изменений ================= 1.5.1 ----- ### Исправления ошибок * Профайлер не должен запускаться по умолчанию (@blond [#535]). * Сборка не должна завершаться с ошибкой из-за неправильных расчётов в профайлере (@blond [#536]). [#535]: https://github.com/enb/enb/issues/535 [#536]: https://github.com/enb/enb/issues/536 1.5.0 ----- ### Опции * Добавлена опция `build-info-file` (@blond [#534]). Ð’ JSON-файл будет записана вся информация о сборке, всё то, что возвращает ENB через JS API. **Пример** ```shell $ enb make --profiler --built-info-output='build-info.json' ``` Ð’ файл `build-info.json` будет записано время работы технологий и время сборки каждого таргета. [#534]: https://github.com/enb/enb/issues/534 ### Зависимости * Модуль `[email protected]` обновлен до версии `0.4.13`. * Модуль `[email protected]` обновлен до версии `4.16.6`. 1.4.1 ----- ### Исправления ошибок * Исправлена ошибка сборки через API в режиме профейлера, если не была указана опция `profilerPercentiles` (@blond [#516]). [#516]: https://github.com/enb/enb/issues/516 ### Зависимости * Модуль `[email protected]` обновлен до версии `7.1.1`. * Модуль `[email protected]` обновлен до версии `2.2.6`. * Модуль `[email protected]` обновлен до версии `3.5.0`. * Модуль `[email protected]` обновлен до версии `4.16.4`. 1.4.0 ----- ### Profiler Добавлен `profiler` для таргетов и технологий (@blond, @timofey-em [#476], [#482], [#490], [#500], [#502], [#505], [#506]). [#476]: https://github.com/enb/enb/pull/476 [#482]: https://github.com/enb/enb/pull/482 [#490]: https://github.com/enb/enb/pull/490 [#500]: https://github.com/enb/enb/pull/500 [#502]: https://github.com/enb/enb/pull/502 [#505]: https://github.com/enb/enb/pull/505 [#506]: https://github.com/enb/enb/pull/506 #### CLI Чтобы получить информацию о времени работы технологий используйте опцию `--profiler`. ```shell $ enb make --profiler ``` Чтобы получить подробную информацию о времени работы каждого таргета используйте опцию `--profiler` со значением `targets`. ```shell $ enb make --profiler=targets ``` Чтобы получить процентили для времени работы технологий используйте опцию `--profiler-percentiles`. ```shell $ enb make --profiler-percentiles=25,50,95 ``` #### API Ð’ режиме профилирования `enb.make()` возвращает объект со следующими полями: * `techMetrics` — содержит результаты профилирования технологий (аналог `$ enb make --profiler`) * `buildTimes` — содержит информацию о времени для каждого таргета (аналог `$ enb make --profiler=targets`) ```js var enb = require('enb'); enb.make({ profiler: true }) .then(function(data) { console.log(data.techMetrics); console.log(data.buildTimes); }); ``` ### Исправления ошибок * Исправлено кэширование для технологии `file-copy` (@loyd [#484]). [#484]: https://github.com/enb/enb/pull/484 ### Зависимости * Модуль `[email protected]` обновлен до версии `7.0.6`. * Модуль `[email protected]` обновлен до версии `2.2.5`. * Модуль `[email protected]` обновлен до версии `4.15.0` (@blond, @greenkeeperio-bot [#453], [#499]). * Модуль `[email protected]` обновлен до версии `0.3.6`. * Модуль `[email protected]` обновлен до версии `1.11.1`. [#453]: https://github.com/enb/enb/pull/453 [#499]: https://github.com/enb/enb/pull/499 ### Commits * [[`ea271f0`](https://github.com/enb/enb/commit/ea271f0)] - chore(package): use caret ranges for dev dependencies (@blond) * [[`91e0ddc`](https://github.com/enb/enb/commit/91e0ddc)] - Object -> Function (@Yeti-or) * [[`d5b5435`](https://github.com/enb/enb/commit/d5b5435)] - Убрал ссылку на конфигуратор (@h4) * [[`fcd75a0`](https://github.com/enb/enb/commit/fcd75a0)] - Rename in docs enb/lib/server/server-middleware -> enb/lib/server/middleware (@adinvadim) 1.3.0 ----- ### API * Через API теперь можно получить класс `MakePlatform` ([#450]). ```js var enb = require('enb'); var MakePlatform = enb.MakePlatform; ``` ### Зависимости * Модуль `[email protected]` обновлен до версии `7.0.3`. 1.2.1 ----- ### Исправления ошибок * Исправлен метод `ProjectConfig.includeConfig()`: путь к модулю должен расчитываться от корня проекта ([#444]). ### Зависимости * Модуль `[email protected]` обновлен до версии `1.1.3`. * Модуль `[email protected]` обновлен до версии `3.4.1`. * Модуль `[email protected]` обновлен до версии `1.10.2`. * Модуль `[email protected]` обновлен до версии `0.3.5`. 1.2.0 ----- ### Улучшения * Добавлена технология `write-file` ([#426]). ### Исправления ошибок * Исправлен метод `Node.resolvePath()`: некорректно обрабатывались абсолютные пути ([#433]). * Исправлены тесты для запуска в NodeJS 4 ([#438]). ### Остальное * Для кэш-файла используется формат `JSON` вместо `CommonJS` ([#434]). Было: ``` .enb/tmp/cache.js ``` Стало: ``` .enb/tmp/cache.json ``` 1.1.2 ----- ### Исправления ошибок * Исправлено наследование технологий в `build-flow` ([#422]): * Исправлена работа `this.__base()` в `builder` ([#230]). * Исправлена работа `this.__base()` для методов технологий ([#222]). ### Зависимости * Модуль `[email protected]` обновлен до версии `6.0.4`. * Модуль `[email protected]` обновлен до версии `2.2.3`: возможность подменять метод `__base()` при тестировании. * Модуль `[email protected]` обновлен до версии `1.10.1`. * Модуль `[email protected]` обновлен до версии `0.4.12`. 1.1.1 ----- ### Исправления ошибок * Технология `file-merge`: исправлено построение карт кода (source maps) для работы с `enb server` ([#421]). ### Зависимости * Модуль `[email protected]` обновлен до версии `1.9.0`. * Модуль `[email protected]` обновлен до версии `6.0.2`. 1.1.0 ----- ### API * Добавлена опция `strict` для метода `enb.make()` ([#411]). ### Исправления ошибок * Исправлено логирование сервера: сообщения `build failed` не будут выводиться при получении файлов, которые не нужно собирать с помощью ENB ([#410]). ### Зависимости * Модуль `[email protected]` обновлен до версии `2.9.0`. * Модуль `[email protected]` обновлен до версии `3.4.0`. * Модуль `[email protected]` обновлен до версии `1.0.1`. * Модуль `[email protected]` обновлен до версии `1.0.2`. 1.0.1 ----- ### Исправления ошибок * Исправлен метод `make`: возможность передавать только опции ([#397]). * Исправлено получение `buildFlow` через API ([#404]). ### Зависимости * Модуль `[email protected]` обновлен до версии `5.0.15`. * Модуль `[email protected]` обновлен до версии `0.4.11`. ### Остальное * Технологии `file-copy`, `file-merge`, `file-provider` и `symlink` используют публичное API ([#406]). 1.0.0 ----- Начиная с данной версии предполагается, что внутреннее устройство `ENB` может произвольно меняться. Пользователям предлагается использовать исключительно публичный API. Если необходимая функциональность там отсутствует - ожидается [issue] или [pull request]. Для удобства участия в разработке `ENB` большая часть ядра `ENB` покрыта тестами. Покрытие на данный момент составляет 90.96%. ### Крупные изменения * Обновлены зависимости до актуальных на момент релиза версий. ([#386]) * Обновлен публичный API: Добавлены классы `BaseTech`, `BuildFlow`, `FileList`. Также добавлен namespace `asyncFs`. ([#398]) * Удалена `cli` команда `help`. ([#358]) * Для команды `enb server` опция `host` теперь задается ключем `-H` вместо `-h`. ([#101]) * Граф сборки не строится по умолчанию. Таким образом уменьшается время сборки и потребление памяти. ([#357]) * Удалены технологии, переехавшие в `enb-bem-techs`, `enb-bem-i18n`, `enb-bembundle` и другие отдельные пакеты. Оставшиеся в ядре технологии: `file-copy`, `file-merge`, `file-provider`, `symlink`. ([#367]) * Удален старый генератор `project-stub` ([#360]) * Удалены старые моки: `test-node`, `test-logger`, `test-file-system`. `mock-node` и `mock-logger` могут быть найдены в пакете `mock-enb`. Вместо `test-file-system` предполагается использовать пакет `mock-fs`. ([#365], [#369], [#371]) * Удалена утилита `dir-glob`. Ð’ качестве замены предполагается пакет `glob`. ([#378]) * Удалена утилита `drop-require-cache`, для совместимости с использующими её на момент релиза технологиями оставлена заглушка. Вместо `drop-require-cache` предполагается использовать модуль `clear-require`. ([#341], [#342]) * Удалена утилита `async-require`, для совместимости с использующими её на момент релиза технологиями оставлена заглушка. Вместо `async-require` предполагается использовать модуль `enb-async-require`. ([#400]) * Удалена утилита `require-or-eval`, для совместимости с использующими её на момент релиза технологиями оставлена заглушка. Вместо `require-or-eval` предполагается использовать модуль `enb-require-or-eval`. ([#400]) * Удалены устаревшие методы из `FileList`. ([#363]) * Обновлен `ENB server`: удалены избыточные зависимости, остальные обновлены до актуальных на момент релиза версий. ([#393]) ### Исправления ошибок * По команде `npm test` тесты запускаются только один раз ([#334]) 0.17.2 ------ ### Исправления ошибок * Теперь можно отключать предупреждения об устаревших модулях с помощью опции `--hide-warnings` ([#304]). * Больше не показывается ложное предупреждение об использовании модуля `dir-glob` ([#312]). ### Зависимости * Модуль `[email protected]` обновлен до версии `1.7.2`: исправляет склеивание файлов с помощью технологии `file-merge` ([#321]). ### Остальное * Предупреждения об устаревших модулях выводятся с использованием стандартного ENB-логгера ([#313]). * Ð’ предупреждениях об устаревших модулях указывается путь модуля, в котором он используется ([#303]). 0.17.1 ------ ### Исправления ошибок * Технология `file-merge` исправлена для объединения CSS-файлов с учётом source maps ([#314]). * Методы `Node.getNodePath` и `Node.resolvePath` теперь возвращают корректный путь в Windows ([#306]). ### Зависимости * Модуль `[email protected]` обновлен до версии `1.7.1`. 0.17.0 ------ ### Крупные изменения * Добавлена поддержка карт кода (source maps) для технологии `file-merge` ([#296]). * Добавлена возможность явно включать цветной вывод в логах (например, в CLI) с помощью переменной окружения `COLOR` ([#271]). ### Остальное * Методы `loadFromDirSync`, `loadFromDir` и `parseFilename` модуля `FileList` объявлены устаревшими ([#268]). * Модуль `dir-glob` объявлен устаревшим ([#270]). Вместо него рекомендуется использовать модуль [glob](https://github.com/isaacs/node-glob). 0.16.0 ------ ### Крупные изменения * Добавлен пул дочерних процессов `jobQueue` для выполнения «тяжелых» задач в технологиях ([#257]). * Добавлен метод `getSharedResources()` для `MakePlatform` и `Node`. Он возвращает набор общих ресурсов, которые могут быть использованы в технологиях. ([#257]). ### Остальное * Методы `justJoinFiles` и `justJoinFilesWithComments` модуля `build-flow` теперь используют `EOL` вместо `\n` ([#242]). 0.15.0 ------ ### JavaScript API * Добавлен метод `make` для сборки нод и таргетов, а также для запуска тасков. * Добавлен метод `runServer` для запуска dev-сервера. ### CLI * `make`: добавлена опция `mode`. * `server`: добавлены опции `dir`, `mode` и `--no-cache`. ### Engines * Добавлена поддержка `Node.js` версии `0.12`. * Добавлена поддержка `io.js`. ### Тестирование * Исправлены тесты для запуска в Windows. * Добавлено тестирование под Windows в Continues Integration при помощи [AppVeyor](http://www.appveyor.com). ### Остальные изменения * Добавлена возможность указать конфиг сборки при инициализации `MakePlatform`. * При построении страницы индекса для dev-сервера теперь учитывается кэш. * Исправлена обработка путей в `FileList` для методов `loadFromDir` и `loadFromDirSync`. 0.14.0 ------ ### Устаревшие технологии * Базовые БЭМ технологии переехали в пакет `enb-bem-techs`. Описание миграции смотрите в [руководстве](https://github.com/enb-bem/enb-bem-techs/blob/master/MIGRATION.md). * `bemdecl-from-bemjson` * `bemdecl-from-deps-by-tech` * `bemdecl-merge` * `bemdecl-provider` * `deps-merge` * `deps-old` * `deps-provider` * `deps-subtract` * `deps` * `files` * `levels` * Технологии для сборки `i18n` переехали в пакет `enb-bem-i18n`: * `i18n-keysets-xml` * `i18n-lang-js` * `i18n-merge-keysets` * Технологии для получения `html` устарели. Вместо них следует использовать технологии, поставляемые в пакетах (`enb-xjst`, `enb-bemxjst` и `enb-bh`) вместе с технологиями сборки шаблонизаторов. * `html-from-bemjson` * `html-from-bemjson-i18n` * `html-from-bemjson-i18n-sync` * Технология `i18n-lang-js-chunks` переехала в пакет `enb-bembundle`. * Технология `bemdecl-test` устарела. ### Остальные изменения * Ð’ `CacheStorage` добавлен метод `saveAsync`. * Снижено потребление памяти при сохранении кэша. 0.13.0 ------ * Для технологии `file-copy` переименованы опции `sourceTarget` -> `source`, `destTarget` -> `target`. 0.12.0 ------ * Новые моки для `fs`. * Автоматически создаем директории для страниц. 0.11.0 ------ * Моки для `fs`. * Отмечаем ряд технологий, как `deprecated`. 0.10.0 ------ * Добавлена опция `--dir`. 0.9.0 ----- * Добавлена опция `sublevelDirectories` для технологии `levels`. * Увеличена `borschik` в зависимостях. 0.8.48 ------ * Добавлена опция `tech` для технологии `css-borschik-chunks`. 0.8.47 ------ * Фикс build-flow: принимаем недекларированные опции в заменах. 0.8.45 ------ * Мелкие фиксы. 0.8.43 ------ * Фиксы, stylus поднята до `0.40.x`. 0.8.40 ------ * Исправлены утечки памяти. 0.8.39 ------ * Технология `html-from-bemjson-i18n-sync`. 0.8.38 ------ * Фикс технологии `xslt`. 0.8.37 ------ * Новая Борщика. 0.8.36 ------ * Переменные для styl-технологии. 0.8.35 ------ * Фикс кэширования в `html-from-bemjson`. 0.8.34 ------ * Фиксы для i18n. 0.8.33 ------ * Фикс ошибки формирования структуры level при наличии файлов с модификаторами но без значений модификатора. 0.8.32 ------ * Фикс ошибки с модификаторами без значений. 0.8.29 ------ * Совместимость с `BEViS`. 0.8.28 ------ * Для технологии `bemdecl-from-bemjson` добавлена возможность указания `elemMods` в `bemjson`. 0.8.27 ------ * Исправлена работа сервера при непредвиденных ошибках. 0.8.26 ------ * Еще один фикс в работе `enb server` — вывод ошибок при возникновении. 0.8.25 ------ * Фикс в работе `enb server` — вывод ошибок при возникновении. 0.8.24 ------ * Поддержка nodejs-синтаксиса для `bemjson`-файлов. 0.8.23 ------ * Информация о местоположении файлов в сборке `stylus`. * Опция `required` для `deps` в формате `yaml`. 0.8.22 ------ * ENV-переменная `ENB_FILE_LIMIT` для ограничения открытых дескрипторов файлов. 0.8.21 ------ * Зависимость от `borschik` -> `v0.3.3`. 0.8.20 ------ * Избавляемся от модуля `colors` из-за ошибок, связанных с ним. * Фикс контекста в `html-from-bemjson-i18n`. 0.8.19 ------ * Фикс кеширования `deps.yaml`-файлов. 0.8.18 ------ * Поддерка `yaml`-формата для описания deps'ов. Считается, что `deps` в формате `deps.yaml` содержит `shouldDeps`. 0.8.17 ------ * Исправлена ошибка EMFILES в технологиях `html-from-bemhtml` и `html-from-bemhtml-i18n`. 0.8.16 ------ * Исправлена ошибка, возникавшая при чтении неверного кэша. * Комментарии о включенных в сборку `priv.js`-файлов. * Асинхронная обработка `deps`. 0.8.15 ------ * Интеграция jscs для проверки стиля. * Фиксы в нормализации зависимостей. 0.8.14 ------ * Расширено поведение useFileList, теперь можно суффиксы задать через опцию `sourceSuffixes`. * Фикс препроцессинга url в CSS. 0.8.13 ------ * Фикс сборки dirs. 0.8.12 ------ * Фикс сборки depsByTech. 0.8.11 ------ * Интеграция с travis. * Использован jshint. 0.8.10 ------ * Конфигуратор включен в состав проекта. * Технология css-stylus-with-nib. * Технология css-less. * Фикс в css-stylus. 0.8.9 ----- * Отдача статики через enb server. 0.8.8 ----- * levelsTarget для bemdecl-test. 0.8.7 ----- * Возможность задания нестандартных схем именования для уровней переопределения. * Фиксы в модульности. 0.8.6 ----- * Поддержка модульности. * Возможность сконфигурировать ноду для заданного режима. 0.8.5 ----- * Фикс в технологии bemdecl-from-bemjson. * Фикс в формировалии относительных путей. 0.8.4 ----- * Фикс в технологии priv-js. 0.8.3 ----- * Технологии node-js, browser-js, vanilla-js. 0.8.2 ----- * Фиксы в технологии pub-js-i18n. 0.8.1 ----- * Переделано логгирование. Теперь оно стало короче и понятнее. * Добавлена опция --graph в enb make. С ее помощью можно вывести граф сборки. * Порядок суффиксов, переданных в useFileList при создании технологии теперь учитывается при формировании результата. * Фиксы в превышении лимита открытых файлов. * Более понятная ошибка при синтаксической ошибке в депсах. [#450]: https://github.com/enb/enb/pull/450 [#444]: https://github.com/enb/enb/pull/444 [#438]: https://github.com/enb/enb/pull/438 [#434]: https://github.com/enb/enb/pull/434 [#433]: https://github.com/enb/enb/pull/433 [#426]: https://github.com/enb/enb/pull/426 [#422]: https://github.com/enb/enb/pull/422 [#421]: https://github.com/enb/enb/pull/421 [#411]: https://github.com/enb/enb/issues/411 [#410]: https://github.com/enb/enb/issues/410 [#406]: https://github.com/enb/enb/issues/406 [#404]: https://github.com/enb/enb/issues/404 [#400]: https://github.com/enb/enb/issues/400 [#398]: https://github.com/enb/enb/issues/398 [#393]: https://github.com/enb/enb/issues/393 [#386]: https://github.com/enb/enb/issues/386 [#397]: https://github.com/enb/enb/pull/397 [#378]: https://github.com/enb/enb/issues/378 [#371]: https://github.com/enb/enb/issues/371 [#369]: https://github.com/enb/enb/issues/369 [#367]: https://github.com/enb/enb/issues/367 [#365]: https://github.com/enb/enb/issues/365 [#363]: https://github.com/enb/enb/issues/363 [#360]: https://github.com/enb/enb/issues/360 [#358]: https://github.com/enb/enb/issues/358 [#357]: https://github.com/enb/enb/pull/357 [#342]: https://github.com/enb/enb/issues/342 [#341]: https://github.com/enb/enb/issues/341 [#334]: https://github.com/enb/enb/issues/334 [#321]: https://github.com/enb/enb/pull/321 [#314]: https://github.com/enb/enb/issues/314 [#313]: https://github.com/enb/enb/pull/313 [#312]: https://github.com/enb/enb/issues/312 [#306]: https://github.com/enb/enb/issues/306 [#304]: https://github.com/enb/enb/issues/304 [#303]: https://github.com/enb/enb/issues/303 [#302]: https://github.com/enb/enb/issues/302 [#296]: https://github.com/enb/enb/issues/296 [#293]: https://github.com/enb/enb/pull/293 [#271]: https://github.com/enb/enb/pull/271 [#270]: https://github.com/enb/enb/issues/270 [#268]: https://github.com/enb/enb/issues/268 [#257]: https://github.com/enb/enb/pull/257 [#242]: https://github.com/enb/enb/issues/242 [#230]: https://github.com/enb/enb/pull/230 [#222]: https://github.com/enb/enb/issues/222 [#101]: https://github.com/enb/enb/issues/101 [issue]: https://github.com/enb/enb/issues/ [pull request]: https://github.com/enb/enb/pulls