UNPKG

bem

Version:
551 lines (434 loc) 24.4 kB
bem-tools changelog =================== 13.08.2013, Version 0.6.15 (stable) ----------------------------------- - API: `getBuildResultChunk()` should've been passed source suffix, not destination, and that was fixed. Check your tech modules that they do not broke. 13.08.2013, Version 0.6.14 (stable) ----------------------------------- - bem: Fix bug in `bem create level` that prevented from using level prototype from module installed in `node_modules` folder on the project level - bem: Throw an error when unable to resolve tech by name specified in `baseTechName` property of tech module 09.08.2013, Version 0.6.13 (stable) ----------------------------------- - tech/v2: `transformBuildDecl()` is reborn and used in `buildByDecl()` - level scanner: use proper suffix for folders representing block with mod and val - level scanner: don't ignore `block/elem/elem.tech` and `block/mod/mod.tech` kinds of folders - deps.js v2: invalidate when declaration modified date is later than deps.js 05.08.2013, Version 0.6.12 (stable) ----------------------------------- - bem: Add `level-proto` tech that creates levels based on prototypes in `.bem/levels/*.js` on project level Example usage (`.bem/level.js`): ```js exports.getTechs = function() { return { 'docs': 'level-proto', // will create levels <name>.blocks/ with proto in .bem/levels/docs.js 'blocks': 'level-proto' // will create levels <name>.blocks/ with proto in .bem/levels/blocks.js }; }; ``` - bem: Fix bug in `bem create level` that prevented from creating level without prototype - bem make: Fix bug in `BemCreateNode` that was causing error when using single tech on different names (e.g. `level-proto`) - bem make: `require()` in `.bem/make.js` configs behaves more correctly now (try to require any dependency of your project from your `.bem/make.js`) - bem make: `level` property in `BlockNode` now initialized on the first access; this helps to deal with levels being created during the `bem make` build process - API: Export `logger` and `template` from `bem` module - API: Add `Node.create()` static method to simplify creation of nodes, see example ```js var opts = { // node options }, node = registry .getNodeClass('BemCreateNode') .create(opts); ``` 30.07.2013, Version 0.6.11 (stable) ----------------------------------- - tech v2: Fix cache. Two technologies with the same target name don't overwrite each other's metadata cache anymore - bem make: Stop using bem create {block,mod,val} commands in make process 19.07.2013, Version 0.6.10 (stable) ----------------------------------- - API: Recommend to use tech V2 API instead of V1 - API: Deprecate `LegacyTech` API - API: Deprecate `bem create block`, `bem create elem` and `bem create mod` commands, use `bem create` command with options instead To disable deprecation warnings set `util.deprecate.silence` value to `false` or set `BEM_NO_DEPRECATION` environment variable to `1`. 16.07.2013, Version 0.6.9 (stable) ---------------------------------- - bem bench: Add ability to test [bh](https://github.com/enb-make/bh) templates and compare them with bemhtml You should run `bem bench -t bh [...other opts...]` to launch `bh` tests only or just `bem bench` to run both if they exist. See docs for more info. 10.07.2013, Version 0.6.8 (stable) ---------------------------------- - deps.js: Correct unique items in `forEach` in case of deps by techs 09.07.2013, Version 0.6.7 (stable) ---------------------------------- - level: Add `opts.noCache` support to `level.createLevel()` to force level creation without cache use - API: Ability to specify source techs for `BundlesLevelNode` (via `getBundleSourceTechs()`) - code: fixed jshint warnings 03.07.2013, Version 0.6.6 (stable) ---------------------------------- - package: Downgrade q from 0.9.6 to 0.9.5 because former is buggy on node 0.10 - level: Show warning when failed to load a tech during level scan, not fail. - level: Fix level scanner to find block.tech dirs within mods - API: Fix `util.isFileP()` and mark it as deprecated 01.07.2013, Version 0.6.5 (stable) ---------------------------------- - API: Add `util.bemParseKey()` helper to parse BEM entity key into BEM entity object (fixes `bem bench` execution error) 30.06.2013, Version 0.6.4 (stable) ---------------------------------- - fixed bugs in new level scanner (see BEM-467) 20.06.2013, Version 0.6.3 (unstable) ------------------------------------ - bem bench: Run `npm install` before `bem make` after revision export 20.06.2013, Version 0.6.2 (unstable) ------------------------------------ - bem bench: Disable verbose mode for `rsync` to stop output buffer overflow - bem bench: Disable double error output on `rsync` 20.06.2013, Version 0.6.1 (unstable) ------------------------------------ - bem: Add `bem bench` command see [docs](https://github.com/bem/bem-tools/blob/master/docs/bem-bench/bem-bench.ru.md) (in russian) for more info - bem: Add ability to create level prototypes (js files) using `bem create level` command. See example: ``` bem create level -l simple .bem/levels/docs.js ``` - bem: Add `project` tech and `project` level prototype: This command will create `my` project: ``` bem create -b my -T project ``` ``` my/ ├── .bem/ | ├── levels/ | | ├── blocks.js | | ├── bundles.js | | ├── docs.js | | ├── examples.js | | └── tech-docs.js | ├── techs/ | └── level.js └── node_modules/ ├── .bin/ | └── bem -> symplink/to/globally/installed/bem (executable) └── bem/ -> symplink/to/globally/installed/bem (module) ``` - bem: Add `docs` tech and `docs` level prototype. This command will create new level based on `docs`: ``` bem create level -l docs docs ``` ``` docs/ └── .bem/ └── level.js ``` This command will create `docs` tech for block `button`: ``` bem create -b button -T docs ``` ``` button/ ├── button.docs/ | └── .bem/ | └── level.js └── ... ``` - bem: Add `tech-docs` tech and `tech-docs` level prototype. - API: Introduce `util.findLevel(path, [types])` function 11.06.2013, Version 0.6.0 (unstable) ------------------------------------ - new techs API is implemented (see lib/tech/v2.js). It operates with real file paths instead of prefixes. This makes build avoid redundant operations and makes it work faster. - as the part of new API new level introspection is implemented. In default implementation it just scans dirs/files and checks their validity to being BEM entity using simple string operations (see scan* methods in lib/level.js). 30.05.2013, Version 0.5.33 (stable) ---------------------------------- - package: q updated to 0.8.12 - package: borschik updated to 0.3.1 - package: xjst updated to 0.4.13 - package: ometajs updated to 3.2.4 - package: preferglobal set to false 23.05.2013, Version 0.5.32 (stable) ----------------------------------- - bem: Fix `bem create level` on Node 0.10.x (Closes #372) - bem make: Create parent directory for `SymlinkLibraryNode` if it doesn't exists (Closes #342) 24.04.2013, Version 0.5.31 (stable) ----------------------------------- - bem: Add additional techs and levels from abandoned introspect branch - API: Add mkdrip wrapper to util.js - bem: ie.css tech should pass absolute path for its chunks - bem make: Fix for "Coud not call for method of undefined" when using nodes from API 04.04.2013, Version 0.5.30 (stable) ----------------------------------- - bem make: Add ability to customize build rules more flexibly by providing Arch.createCustomNode() method - bem make: Add match*() methods to `simple` level prototype, add tests (Closes #282) 25.03.2013, Version 0.5.29 (stable) ----------------------------------- - bem make: don't update git library form upstream when working copy state satisfies to configured one. git update commands chain altered (no git reset for now) (Closes #335) 20.03.2013, Version 0.5.27 (stable) ----------------------------------- - bem make: fixed to work on node 0.10 (Closes #357) - bem make: some performance boost achieved (#250) 06.03.2013, Version 0.5.26 (stable) ----------------------------------- - bem make: Magic nodes doesn't link the nodes it creates with parent magic nodes (Closes #306) - deps.js: don't swallow parsing errors (Closes #353) 14.02.2013, Version 0.5.25 (stable) ----------------------------------- - bem server: windows fixes 04.02.2013, Version 0.5.24 (stable) ----------------------------------- - bem server: Add error handling for server.listen() (Closes #315) - bem server: Fix server message about serving address to have real host name it is listening on (Closes #334) - bem server: Add socket-only option to make bem server listen only unix socket (Closes #316) - bem server: Add a check for specified tcp port value to be a number - bem make: Fix recursion error when build target name contain trailing slash (Closes #252) - bem make: Use tech.getSuffixes() in MetaNode to build dependencies list (Closes #320) - bem make: Git library checkout fixed to work with commit hashes (close #302) - bem make: Git library branch parameter is added to specify branch name. Use treeish parameter to specify commit or tag. - ie6.css tech: Don't include bundle.css 11.12.2012, Version 0.5.21 (stable) ----------------------------------- - Update `borschik` to `0.2.3` 12.11.2012, Version 0.5.20 (stable) ----------------------------------- - bem make: Fixed `npmPackages` check in `LibraryNode` (Closes #300) - bem make: Install production dependencies in `LibraryNode` by default (Closes #310) - Update `csso` to `1.3.5` - Update `q` to `0.8.10` 06.11.2012, Version 0.5.19 (stable) ----------------------------------- - Freeze dependencies using `npm shrinkwrap` to fix problems with `q 0.8.10` release 06.11.2012, Version 0.5.18 (stable) ----------------------------------- - Dummy release 25.09.2012, Version 0.5.17 (stable) ----------------------------------- - bem: Make content read of deps.js files of block to be synchronous to gain some speed boost (PR #261) - bem make: Provide a more convenient way to configure the list of bundles and blocks levels to build (Closes #260) - bem make: Change signature of `getLevels()` method of `BundleNode` to `getLevels(tech)` to add ability to configure the list of levels more precisely - docs: Small JSDoc improvements in `BundleNode` class - docs: Correct links in README (@banzalik) 19.09.2012, Version 0.5.16 (stable) ----------------------------------- - bem: Require errors in .bem/level.js were masked (Closes #223) - bem: Add `.git` to ignorable paths during introspection - bem: Skip `blocks/` level directory during introspection in `nested` level - bem: Introduce `bem decl intersect` command (Closes #219) - bem make: Install library dependencies after checkout (Closes #224) - bem make: Do not install dependencies when `npmPackages = false` (Closes #229) - bem make: Ability to configure list of techs to optimize, see `BundleNode.getOptimizerTechs()` (Closes #231) - bem make: `Rename bemhtml.js` tech to `bemhtml`, fix this in your `.bem/make.js` files - bem make: Use non interactive mode for `svn` commands in `SvnLibraryNode` (Closes #221) - bem make: Store `*.meta.js` files in `<project-root>/.bem/cache/` directory (Closes #232) - bem make: Fixed bug in the inspector preventing it to work properly in FF (Closes #240) - docs: Translate into english chapter about level.js (Closes #38) - docs: Updated english docs in installation topic (@fliptheweb, #225) - docs: Add `CONTRIBUTING.md` - docs: Add `LICENSE` (we use MIT) - API: Expose `__filename` and `__dirname` vars in `.bem/make.js` files - API: Add `util.exec()` promised function to execute commands - API: Remove `relative()` function from `lib/path.js` in favor of that in node 0.6+ (Closes #226) - API: Refactor introspection logic (Pull #237) - Add `createIntrospector()` method to `Level` class to create custom introspectors (see jsdoc) - Refactor `getDeclByIntrospection()` to use `createIntrospector()` - Add `getItemsByIntrospection()` method to `Level` class, that returns array of BEM entities in techs - API: Refactor `LevelNode` (Pull #238) - Lazy level object creation - Use `getItemsByIntrospection()` to collect BEM items to build - Unify actualization of blocks and elems in `BundleLevelNode` - tests: Cover introspection logic - tests: Cover `deps.intersect()` and `deps.subtract()` - tests: Cover building of bundles-as-elements - package: Support node 0.8.x (Closes #220) 07.09.2012, Version 0.5.15 (stable) ------------------------------------ - bem: Add `;` after each include in js-based techs (`js` and `js-i`) (Closes #210) - bem make: Bugfix: Use `Q.when()` to call base `alterArch()` method in `BundlesLevelNode` (Closes #216) - docs: Add russian and english docs for `bem make` / `bem server` feature - docs: Add more info on `--chdir`, `-C` option on `bem create *` commands (See #204) - docs: Add `BEM.create()` docs: russian and english (Closes #192) - docs: Document API changes in `BEM.build()` (Closes #193) - docs: Document extensions in tech modules API (Closes #194) - docs: Add russian docs for `.bem/level.js` config (See #38) - API: Implement `include()` in `.bem/make.js` files (Closes #209) - package: Depends on `csso ~1.2.17` (some critical bug fixes) 24.08.2012, Version 0.5.14 (unstable) ------------------------------------ - bem: Get rid of `Q` deprecation warnings (Closes #200) - bem make: Node of type `MergedBundle` depends on all nodes of type `BundleNode` on the same level (Closes #206) - package: Depend on `q ~0.8.8` and `apw ~0.3.6` 11.08.2012, Version 0.5.13 (unstable) ------------------------------------ - bem make: Create directory `.bem/snapshots` if it doesn't exist before writting a snapshot (Closes #201) - bem make: Implement `clean()` method of `BemCreateNode` - bem make: `getLevels()` method of `BundleNode` fixed to avoid putting undefined level into the resulting array (Closes #203) - API: Add `getLevelPath()` helper method to `BlockNode` and `LevelNode` classes (Closes #190) 07.08.2012, Version 0.5.12 (unstable) ------------------------------------ - bem make: Forward errors from `borschik` with prefix `borschik: ` in `BorschikNode` - bem make: Store output file name in `this.output` property to use later in the logs in `BorschikNode` - package: Depends on `borschik ~0.0.11` 02.08.2012, Version 0.5.11 (unstable) ------------------------------------ - bem: Implement various strategies for mass IO operations in `Tech.filterPrefixes()` and `BemBuildNode.isValid()` (Closes #167) - bem: Fix referencing techs by name - bem: Allow use of `module.exports = ...` in files read by `util.readDecl()` - bem: `util.getBemTechPath()` returns full tech path now, with extension - bem: Add `-T` option as an alias for `-t`, `--tech` for `bem build` command - bem: Add `--output-level` and `--block`, `--elem`, `--mod`, `--val` options for `bem build` command to build BEM entities on bundle levels - bem: Allow using `require()` in decl-like files (Closes #172) - bem: Add inspector server feature to `bem make` and `bem server` commands - bem: Do not create new class from `LegacyTech` and legacy tech module content mixin in `getTechClass()` (potential bug fix) - bem: Bugfix: `bem decl subtract` creates empty `*.deps.js` file (Closes #170) - deps.js tech: Fix serializing of empty deps - deps.js tech: Fix twice expansion of deps (Closes #163) - bem make: Allow build triggering using final file names in case when tech produces many files (Closes #172) - bem make: When `BEM_IO_STRATEGY === 'callback'` and `meta` was empty promise would never resolve - bem make: Add merged bundle support - bem server: Listen on file socket on `--socket` option, configure socket path using `--socket-path` option and socket permissions using `--socket-mode` option (Closes #166) - docs: Document API changes in `BEM.create.block()`, `BEM.create.elem()` and `BEM.create.mod()` of version 0.5.x (Closes #161) - docs: Declare dependency on NodeJS 0.6+ - API: Add third `level` optional argument to `getTechClass()` function of `tech` method - API: Add third `level` optional argument to `createTech()` function of `tech` method - API: Add `getCreateSuffixes()` and `getBuildSuffixes()` to `Tech` class to let build system to deal with techs like `bemhtml` more correct - API: Add `util.removePath(path)` function to remove file and dir paths, but not recursively - API: Add `util.readJsonJs(path)` function to read and eval JSON-JS files - API: Add `util.symbolicLink(link, target, force)` function - API: Add `util.lpad()` alias to `util.pad()`, add `util.rsplit(string, sep, maxsplit)` function - API: Add `getContext()` method to `LegacyTech` class as a proxy to `this.techObj.getContext()` - API: Add `getBuildResultChunk()` method to `LegacyTech` class as a proxy to `this.techObj.outFile()` - API: Wait for `opts.declaration` to load before call to `this.techObj.build()` in `LegacyTech` class - tests: Add tests for serializing empty deps in `deps.js tech` - tests: Use `bem-bl` as git submodule for tests data (Closes #176) - tests: Add tests that additionally build `i18n` and `i18n.js` techs for bundles - tests: Add tests for merged bundle build - tests: Add tests for `getTechClass()` function of `tech` module - package: Add `dom-js` dependency for i18n tests (Closes #172) - package: Add `clean` target to `GNUmakefile` - package: Depend on `coverjs >= 0.0.7-aplha` (Closes #191) 13.06.2012, Version 0.5.10 (unstable) ------------------------------------ - bem: Use synchronous file existence check in `filterPrefixes()` instance method in `Tech` class - bem: Fix bug with `--chdir` option for `bem create level` command (Closes #151) - deps.js tech: More precisely report problems in blocks `*.deps.js` files - deps.js tech: Read every block `*.deps.js` file only once - bem make: Checks for target dir to exist before executing `svn info` in `SvnLibraryNode` (Closes #154) - bem make: Output collected logs in case of fail in `Node` (Closes #155) - bem make: Fix exception during build of `*.meta.js` files in `BemBuildMetaNode` (Closes #153) - bem make: Sync mtime checks in `isValid()` instance method of `BemBuildNode` class (Closes #157) - API: Add `util.readDecl()` promised function - tests: Add legacy `Makefile` "tests" for `bem decl merge` command - package: Depend on `coa ~0.3.5` - package: Depend on `apw ~0.3.4` 09.06.2012, Version 0.5.9 (unstable) ------------------------------------ - bem make: Build minimized versions of `*.bemhtml.js` files - bem make: Check for svn revision in `SvnLibraryNode.isValid()` 09.06.2012, Version 0.5.8 (unstable) ------------------------------------ - bem make: `SvnLibraryNode` extends `ScmLibraryNode` 08.06.2012, Version 0.5.7 (unstable) ------------------------------------ - More fixes on running of `bem make` and `bem server` not in project root - bem: Output full stack traces on error - bem: Lazy tech paths resolving in `Level` class - bem: `bem create *` commands display error when there are no techs specified in command line options and `defaultTechs` in level config is empty - bem: Add convenient `bem create` command to create all type of BEM entities - bem server: Convert russian lang messages to english - bem server: Fix wrong links in directory listings - bem server: Strip query string part before accessing a file - bem make: Do not checkout `bem-bl` by default - bem make: Fix `LibraryNode` - bem make: Extend context of `.bem/make.js` using `global` - bem make: Conditional build of bundle files based on existance of `*.bemjson.js` and `*.bemdecl.js` on the file system - bem make: Resolve tech module paths using level object in `BundleNode` - bem make: Use `Level.createTech()` instead of `Level.getTech()` to construct tech objects for `BemBuildNode` - bem make: Depend nodes of `BemBuildNode` class only on existing blocks files to increase performance - bem make: Run nodes of `BemBuildNode` class forked by default to increase performance - bem make: Add more logging to `BundleNode` - bem make: Add support for `csso` processing of `*.css` files for production builds in `BorschikNode` - bem make: Add support for `uglifyjs` processing of `*.js` files for production builds in `BorschikNode` - bem make: Rename `repo` param to `url` in `ScmLibraryNode` and its derivatives - bem make: Fix cleaning of obsolete dependencies in `BemBuildNode` - bem make: Huge internal refactoring on `BundleNode` - bem make: Rename `getCreateDependencies()` instance method to `getDependencies()` in `BemBuildNode` class - bem make: Rename `getCreateDependencies()` instance method to `getDependencies()` in `BemCreateNode` class - bem make: Add `setFileNode()` and `setBemCreateNode()` instance methods to `BundleNode` class - logging: Log node versions on `debug` verbosity - logging: Log profiling info of `bem make` - logging: Add more `debug` verbosity logging to `BundleNode` - docs: Add jsdoc for `Level` class - docs: Update jsdoc for `Tech` class - docs: Add docs for `bem create elem` and `bem create mod` - docs: Add docs for `bem create` - docs: Fix jsdoc for `setBemBuildNode()` instance method of `BundleNode` class - docs: Add jsdoc for `Node`, `FileNode`, `MagicNode`, `ScmLibraryNode` - API: Export `util` module as `require('bem').util` - API: Add `matchAny()` instance method to `Level` class - API: Add instance methods-shortcuts to `Level` class: `getPath()`, `getPathByObj()`, `getRelPathByObj()` - tests: Add tests for bem make - tests: Rewrite all tests to `mocha` - package: Add `xjst 0.2.21` to dependency list - package: Add `ometajs ~2.1.10` to dependency list - package: Bump `q` dependency version to `~0.8.5` - package: Bump `apw` dependency version to `~0.3.2` - package: Bump `borschik` dependency version to `~0.0.10` 18.05.2012, Version 0.5.6 (unstable) ------------------------------------ - docs: Draft of russian docs for `bem make` / `bem server` - API: Add `resolvePaths(paths)` and `resolvePath(path)` methods to `Level` class - bem make: Add more logging to `BorschikNode` - bem make: Use `js-i` tech in `BundleNode` to build bundles `*.js` files by default - package: Bump `borschik` dependency to `~0.0.9` 17.05.2012, Version 0.5.5 (unstable) ------------------------------------ - Require node 0.6.x - deps.js tech: Fix bug with building of `deps.js` files introduced in 0.5.2 - Fix running of `bem make` and `bem server` not in project root - logging: Add `flog()` shorthand function to output formatted log as a replacement for `console.log` - logging: Log version number of `bem-tools` on `bem make` and `bem server` - bem server: Show http link on server start - bem server: Fix current directory output in directory listing - bem make: Tune verbosity level for build messages - bem make: Log targets to build on build start - bem make: Fix validity checks in `LibraryNode` and `BemBuildNode` - bem make: Move validity cheks from `FileNode` to `GeneratedFileNode` - bem make: Fix `clean()` of `BemBuildMetaNode` - bem make: Store relative paths in `*.meta.js` files - API: Add `require('bem').version` - API: Add `require('bem/lib/util').writeFileIfDiffers(path, content, force)` 16.05.2012, Version 0.5.4 (unstable) ------------------------------------ - package: Bump `apw` dependency version to `~0.3.0` 15.05.2012, Version 0.5.3 (unstable) ------------------------------------ - deps.js tech: Support `deps.js` format as a declaration for `bem build` 15.05.2012, Version 0.5.2 (unstable) ------------------------------------ - Add `--verbosity` option to `bem make` and `bem server` commands - bem make: Add a lot of colorfull logging - bem make: A lot of internal refactorings - bem make: Fix dependency bug with building `_*.ie.css` files - bem make: Fix child process handling in `BorschikNode` and `BemBuildNode` - API: Add winston as logging engine 05.05.2012, Version 0.5.1 (unstalbe) ------------------------------------ - bem make: Quick fix removing testing code 05.05.2012, Version 0.5.0 (unstable) ------------------------------------ - bem make / server feature introduction