- Updated
enb
to ^1.1.0
- Updated
enb
to ^0.17.2
- ENB is used as a fallback for
bem make
andbem server
- Support for native
bem make
config is deprecated and will be removed in next version - Support for
require
in BEMJSON - Updated npm dependencies
- Run tests on node.js 0.12 and io.js
- Use clean-css instead of CSSO — Update borschik to ~1.2.0
- Build less and stylus techs to preliminary files
- Add templates for
bem create
- Do not run tests on node.js 0.8
- Updated borschik version to 1.0.4
- Improved sass tech
- Updated borschik version to 1.0.1
- Updated npm dependencies
- Added scss tech (
v2/sass
) - Added bemjson.js tech (
v2/bemjson.js
)
- Added stylus tech (
v2/styl
) - Ability to set
--no-colors
and--verbosity
options withBEM_MAKE_NO_COLORS
andBEM_MAKE_VERBOSITY
environment variables.
— bem create: Add possibility to create entities with predefined content
- Package: COA is updated to 0.4.0, cli-table to 0.3.0
- New roole and less techs
- Correctly handle promises reject with no reason in tech modules
- Check that bundle techs don't have common build suffixes
- Save build cache data only on successful build
- Package: borschik is updated to 0.4.2
- Fixed crash related to underscore->lodash change
- Reverted: pass Tech#getTechPath() result as bem-create's forceTech argument The change caused level-proto tech to break
- Tests: level-proto tech is included into bem make suite
- Fix "bem create" as worcker invocation
- Pass Tech#getTechPath() result as bem-create's forceTech argument
- bem server: fixed encoding problem with files containing non latin characters
- Fixed exception in
bem build
-
Level scanner no longer fails on symlinks
-
css tech correctly generates classes for modifiers without values (#425)
-
Warning is shown when level does not exists or does not contains .bem directory (#418)
-
Ability to specify multiple elems in elem properties in
deps.js
files (#401):({ shouldDeps: { block: 'bla', elem: ['e1', 'e2', 'e3'] } })
is equivalent to:
({ shouldDeps: [ { block: 'bla', elem: 'e1' }, { block: 'bla', elem: 'e2' }, { block: 'bla', elem: 'e3' } })
-
Shortcut for specifying tech dependencies of the same block (#413):
{ block: 'b', tech: 'js', mustDeps: { tech: 'bemhtml' } }
is equivalent to:
{ block: 'b', tech: 'js', mustDeps: { block: 'b', tech: 'bemhtml' } }
-
build command for
bem bench
is customizable viabem-bench-build
script in project'spackage.json
-
GitLibraryNode specifies git dir explicitly with git commands (#355)
-
Base tech is selected according to child's
API_VER
. Error is thrown when base and child techs have differentAPI_VER
(#416) -
It is possible to write tech module as a function (#363):
module.exports = function(BEM) { return { //tech mixin }; }
-
It is possible to write level config as a function (#364):
module.exports = function(BEM) { return { //level mixin }; }
-
baseLevelName
property can be used in level config to specifysimple
orproject
level by name (#367) -
scanner of simple level doesn't ignore dirs like name.tech
-
deps: possibility to declare dependence without explicitly including item (#459):
{ block: "some-block", mustDeps: [ {block: "other-block", include: false} ] }
In this case,
other-block
won't be included in bundle withsome-block
automatically. But, if bundle requires bothsome-block
andother-block
,other-block
will always be included beforesome-block
. -
--no-colors
option to disable colors in terminal -
v1
tech warning shows link to migration instructions -
q-fs
andq-http
libraries replaced withq-io
-
underscore
library replaced withlodash
(#94) -
benchmarks can be built on multiple bundle levels
- Update csso within borschik dependency to 1.3.8
- deps.js: Fix levels cache validity check
- Warn on v1 tech module usage, not creation
- GitLibraryNode: add origin parameter to customise remote name
- Update borschik dependency to 0.3.5
- Version-independent solution for CP#fork (Node.js 0.6+)
- Add tech name and path to V1 deprecation warning
- Fix
bem create level
run without prototype (--level opt) - LibraryNode: create the leading directories before checkout
- bemdecl.js: Traverse through all fields, not only
mix
andcontent
- API:
getBuildResultChunk()
should've been passed source suffix, not destination, and that was fixed. Check your tech modules that they do not broke.
- bem: Fix bug in
bem create level
that prevented from using level prototype from module installed innode_modules
folder on the project level - bem: Throw an error when unable to resolve tech by name specified in
baseTechName
property of tech module
- tech/v2:
transformBuildDecl()
is reborn and used inbuildByDecl()
- level scanner: use proper suffix for folders representing block with mod and val
- level scanner: don't ignore
block/elem/elem.tech
andblock/mod/mod.tech
kinds of folders - deps.js v2: invalidate when declaration modified date is later than deps.js
-
bem: Add
level-proto
tech that creates levels based on prototypes in.bem/levels/*.js
on project levelExample usage (
.bem/level.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 inBlockNode
now initialized on the first access; this helps to deal with levels being created during thebem make
build process -
API: Export
logger
andtemplate
frombem
module -
API: Add
Node.create()
static method to simplify creation of nodes, see examplevar opts = { // node options }, node = registry .getNodeClass('BemCreateNode') .create(opts);
- 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
- API: Recommend to use tech V2 API instead of V1
- API: Deprecate
LegacyTech
API - API: Deprecate
bem create block
,bem create elem
andbem create mod
commands, usebem 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
.
-
bem bench: Add ability to test bh templates and compare them with bemhtml
You should run
bem bench -t bh [...other opts...]
to launchbh
tests only or justbem bench
to run both if they exist.See docs for more info.
- deps.js: Correct unique items in
forEach
in case of deps by techs
- level: Add
opts.noCache
support tolevel.createLevel()
to force level creation without cache use - API: Ability to specify source techs for
BundlesLevelNode
(viagetBundleSourceTechs()
) - code: fixed jshint warnings
- 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
- API: Add
util.bemParseKey()
helper to parse BEM entity key into BEM entity object (fixesbem bench
execution error)
- fixed bugs in new level scanner (see BEM-467)
- bem bench: Run
npm install
beforebem make
after revision export
- bem bench: Disable verbose mode for
rsync
to stop output buffer overflow - bem bench: Disable double error output on
rsync
-
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 andproject
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 anddocs
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 blockbutton
:bem create -b button -T docs
button/ ├── button.docs/ | └── .bem/ | └── level.js └── ...
-
bem: Add
tech-docs
tech andtech-docs
level prototype. -
API: Introduce
util.findLevel(path, [types])
function
- 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).
- 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
- 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)
- 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
- 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)
- 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)
- bem make: fixed to work on node 0.10 (Closes #357)
- bem make: some performance boost achieved (#250)
- 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)
- bem server: windows fixes
- 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
- Update
borschik
to0.2.3
- bem make: Fixed
npmPackages
check inLibraryNode
(Closes #300) - bem make: Install production dependencies in
LibraryNode
by default (Closes #310) - Update
csso
to1.3.5
- Update
q
to0.8.10
- Freeze dependencies using
npm shrinkwrap
to fix problems withq 0.8.10
release
- Dummy release
- 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 ofBundleNode
togetLevels(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)
- 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 innested
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 tobemhtml
, fix this in your.bem/make.js
files - bem make: Use non interactive mode for
svn
commands inSvnLibraryNode
(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 fromlib/path.js
in favor of that in node 0.6+ (Closes #226) - API: Refactor introspection logic (Pull #237)
- Add
createIntrospector()
method toLevel
class to create custom introspectors (see jsdoc) - Refactor
getDeclByIntrospection()
to usecreateIntrospector()
- Add
getItemsByIntrospection()
method toLevel
class, that returns array of BEM entities in techs
- Add
- 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()
anddeps.subtract()
- tests: Cover building of bundles-as-elements
- package: Support node 0.8.x (Closes #220)
- bem: Add
;
after each include in js-based techs (js
andjs-i
) (Closes #210) - bem make: Bugfix: Use
Q.when()
to call basealterArch()
method inBundlesLevelNode
(Closes #216) - docs: Add russian and english docs for
bem make
/bem server
feature - docs: Add more info on
--chdir
,-C
option onbem 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)
- bem: Get rid of
Q
deprecation warnings (Closes #200) - bem make: Node of type
MergedBundle
depends on all nodes of typeBundleNode
on the same level (Closes #206) - package: Depend on
q ~0.8.8
andapw ~0.3.6
- bem make: Create directory
.bem/snapshots
if it doesn't exist before writting a snapshot (Closes #201) - bem make: Implement
clean()
method ofBemCreateNode
- bem make:
getLevels()
method ofBundleNode
fixed to avoid putting undefined level into the resulting array (Closes #203) - API: Add
getLevelPath()
helper method toBlockNode
andLevelNode
classes (Closes #190)
- bem make: Forward errors from
borschik
with prefixborschik:
inBorschikNode
- bem make: Store output file name in
this.output
property to use later in the logs inBorschikNode
- package: Depends on
borschik ~0.0.11
- bem: Implement various strategies for mass IO operations in
Tech.filterPrefixes()
andBemBuildNode.isValid()
(Closes #167) - bem: Fix referencing techs by name
- bem: Allow use of
module.exports = ...
in files read byutil.readDecl()
- bem:
util.getBemTechPath()
returns full tech path now, with extension - bem: Add
-T
option as an alias for-t
,--tech
forbem build
command - bem: Add
--output-level
and--block
,--elem
,--mod
,--val
options forbem 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
andbem server
commands - bem: Do not create new class from
LegacyTech
and legacy tech module content mixin ingetTechClass()
(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'
andmeta
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()
andBEM.create.mod()
of version 0.5.x (Closes #161) - docs: Declare dependency on NodeJS 0.6+
- API: Add third
level
optional argument togetTechClass()
function oftech
method - API: Add third
level
optional argument tocreateTech()
function oftech
method - API: Add
getCreateSuffixes()
andgetBuildSuffixes()
toTech
class to let build system to deal with techs likebemhtml
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 toutil.pad()
, addutil.rsplit(string, sep, maxsplit)
function - API: Add
getContext()
method toLegacyTech
class as a proxy tothis.techObj.getContext()
- API: Add
getBuildResultChunk()
method toLegacyTech
class as a proxy tothis.techObj.outFile()
- API: Wait for
opts.declaration
to load before call tothis.techObj.build()
inLegacyTech
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
andi18n.js
techs for bundles - tests: Add tests for merged bundle build
- tests: Add tests for
getTechClass()
function oftech
module - package: Add
dom-js
dependency for i18n tests (Closes #172) - package: Add
clean
target toGNUmakefile
- package: Depend on
coverjs >= 0.0.7-aplha
(Closes #191)
- bem: Use synchronous file existence check in
filterPrefixes()
instance method inTech
class - bem: Fix bug with
--chdir
option forbem 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
inSvnLibraryNode
(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 inBemBuildMetaNode
(Closes #153) - bem make: Sync mtime checks in
isValid()
instance method ofBemBuildNode
class (Closes #157) - API: Add
util.readDecl()
promised function - tests: Add legacy
Makefile
"tests" forbem decl merge
command - package: Depend on
coa ~0.3.5
- package: Depend on
apw ~0.3.4
- bem make: Build minimized versions of
*.bemhtml.js
files - bem make: Check for svn revision in
SvnLibraryNode.isValid()
- bem make:
SvnLibraryNode
extendsScmLibraryNode
- More fixes on running of
bem make
andbem 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 anddefaultTechs
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
usingglobal
- 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 ofLevel.getTech()
to construct tech objects forBemBuildNode
- 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 inBorschikNode
- bem make: Add support for
uglifyjs
processing of*.js
files for production builds inBorschikNode
- bem make: Rename
repo
param tourl
inScmLibraryNode
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 togetDependencies()
inBemBuildNode
class - bem make: Rename
getCreateDependencies()
instance method togetDependencies()
inBemCreateNode
class - bem make: Add
setFileNode()
andsetBemCreateNode()
instance methods toBundleNode
class - logging: Log node versions on
debug
verbosity - logging: Log profiling info of
bem make
- logging: Add more
debug
verbosity logging toBundleNode
- docs: Add jsdoc for
Level
class - docs: Update jsdoc for
Tech
class - docs: Add docs for
bem create elem
andbem create mod
- docs: Add docs for
bem create
- docs: Fix jsdoc for
setBemBuildNode()
instance method ofBundleNode
class - docs: Add jsdoc for
Node
,FileNode
,MagicNode
,ScmLibraryNode
- API: Export
util
module asrequire('bem').util
- API: Add
matchAny()
instance method toLevel
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
- docs: Draft of russian docs for
bem make
/bem server
- API: Add
resolvePaths(paths)
andresolvePath(path)
methods toLevel
class - bem make: Add more logging to
BorschikNode
- bem make: Use
js-i
tech inBundleNode
to build bundles*.js
files by default - package: Bump
borschik
dependency to~0.0.9
- 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
andbem server
not in project root - logging: Add
flog()
shorthand function to output formatted log as a replacement forconsole.log
- logging: Log version number of
bem-tools
onbem make
andbem 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
andBemBuildNode
- bem make: Move validity cheks from
FileNode
toGeneratedFileNode
- bem make: Fix
clean()
ofBemBuildMetaNode
- bem make: Store relative paths in
*.meta.js
files - API: Add
require('bem').version
- API: Add
require('bem/lib/util').writeFileIfDiffers(path, content, force)
- package: Bump
apw
dependency version to~0.3.0
- deps.js tech: Support
deps.js
format as a declaration forbem build
- Add
--verbosity
option tobem make
andbem 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
andBemBuildNode
- API: Add winston as logging engine
- bem make: Quick fix removing testing code
- bem make / server feature introduction