Switch branches/tags
Find file
Fetching contributors…
Cannot retrieve contributors at this time
477 lines (377 sloc) 20.9 KB

bem-tools changelog

16.07.2013, Version 0.6.9 (stable)

  • bem bench: Add ability to test 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 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 (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
    ├── .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
    └── .bem/
        └── level.js

    This command will create docs tech for block button:

    bem create -b button -T 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
  • 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 (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 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