{"id":17766683,"url":"https://github.com/floatdrop/gulp-bem-specs","last_synced_at":"2026-01-15T22:31:22.447Z","repository":{"id":20012593,"uuid":"23280193","full_name":"floatdrop/gulp-bem-specs","owner":"floatdrop","description":"Specifications for the gulp-bem project","archived":false,"fork":false,"pushed_at":"2014-08-24T13:16:05.000Z","size":156,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-01T13:47:22.266Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/floatdrop.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-08-24T12:13:22.000Z","updated_at":"2016-10-02T14:23:40.000Z","dependencies_parsed_at":"2022-08-27T03:41:00.687Z","dependency_job_id":null,"html_url":"https://github.com/floatdrop/gulp-bem-specs","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/floatdrop/gulp-bem-specs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/floatdrop%2Fgulp-bem-specs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/floatdrop%2Fgulp-bem-specs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/floatdrop%2Fgulp-bem-specs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/floatdrop%2Fgulp-bem-specs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/floatdrop","download_url":"https://codeload.github.com/floatdrop/gulp-bem-specs/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/floatdrop%2Fgulp-bem-specs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28472773,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-15T22:27:41.514Z","status":"ssl_error","status_checked_at":"2026-01-15T21:54:47.910Z","response_time":62,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-26T20:34:11.355Z","updated_at":"2026-01-15T22:31:22.433Z","avatar_url":"https://github.com/floatdrop.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Specifications\n\nThis document is used by [gulp-bem](https://github.com/floatdrop/gulp-bem).\n\n * [BEM identifiers](#bem-identifiers-)\n * [Directory structure](#directory-structure-)\n * [Dependencies file](#dependencies-file-)\n\n## BEM identifiers ![stable](http://img.shields.io/badge/spec-stable-brightgreen.svg?style=flat)\n\nWe are using conventions, that are described in [bem-naming](https://github.com/bem/bem-naming#string-representation) repository.\n\nBEM __identifier__ defines _Block_, _Element_, _Modificator_ and _Modificator value_ string representation.\n\nTo separate _Block_ name from _Element_ we are using __Element delimeter__, which by default equals `__`.\n\nTo separate _Block_ name from _Modificator_, _Element_ from _Modificator_ and _Modificator_ from _Modificator value_ we are using __Modificator delimeter__, which by default equals `_`.\n\nEvery _identifier_ should contain _Block_. _Element_, _Modificator_ and _Modificator value_ can be absent.\n\nRules defined above describes next string:\n\n`Block{Element delimeter}Element{Modificator delimeter}Modificator{Modificator delimeter}Modificator value`\n\n_Block_, _Element_, _Modificator_ and _Modificator value_ should be strings that fulfill regular expression `[a-z0-9]+(?:-[a-z0-9]+)*`\n\n## Directory structure ![stable](http://img.shields.io/badge/spec-stable-brightgreen.svg?style=flat)\n\nWe are using conventions, that are described on [bem.info](http://bem.info/method/filesystem/) site.\n\nBEM methodology does not implies certain directory structure, but for file separation and structuring your application it is advised to store files in predefined way. All files, that are belongs to BEM entity, that has _identifier_ should be placed in directory according to _Block_, _Element_ and _Modificator_ values.\n\nDirectories can be different types (based on nesting):\n\n* __Level__ - top directory with _Blocks_.  \n* __Block__ - child directory in _Level_.\n* __Element__ - child directory in _Block_ that starts with _Element delimeter_.\n* __Modificator__ - child directory in _Block_ or _Element_ that starts with _Modificator delimeter_.\n\nAll files for _Block_ should go to _Block_ directory, etc.\n\n## Dependencies file ![unstable](http://img.shields.io/badge/spec-unstable-orange.svg?style=flat)\n\nEach directory in _directory structure_ can have __dependency file__ that have next name: `{bem}.deps.js`.\n\n\u003e `{bem}` is placeholder for _BEM identifier_.\n\nThose files should contain JavaScript code that exports _dependency object_ (CommonJS style is used).\n\n_Dependency object_ can have next properties:\n\n * `require` - contains `Object` or `Array` of `Object`\n * `expect` - contains `Object` or `Array` of `Object`\n\nThis properties is used to determine order of included dependencies with current block.\n\n`require` defines dependencies, that should be included __before__ current block.\n\n`expect` defines dependencies, that should be included __after__ current block.\n\n`Object` in `require` and `expect` is short notation of [BEM object](https://github.com/floatdrop/bem-object) that will be normalized with [deps-normalize](https://github.com/floatdrop/deps-normalize) and missing properties (`level`, `block`, `elem`, `mod`, `val`) will be taken from current block.\n\nExample:\n\n```js\nmodules.exports = {\n    require: [{block: 'parent'}],\n    expect: [{block: 'ancestor'}]\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffloatdrop%2Fgulp-bem-specs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffloatdrop%2Fgulp-bem-specs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffloatdrop%2Fgulp-bem-specs/lists"}