-
Notifications
You must be signed in to change notification settings - Fork 23
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Improved performance of scan level #221
Conversation
The `node.getLevelNamingScheme` and the `node.setLevelNamingScheme` methods will be removed in `enb@2.0.0`.
Got rid of scheme builders
Redundant code of deps
Remove deprecated techs
Remove deprecated options
The `mock-fs` does not support `require` for Node.js 4. Because of this test failed with error: ``` Cannot find module 'path/to/file.js ```
Support Node.js 4
**Example of new format:** ``` { button__text: [ { entity: { block: ‘button’, elem: ‘text’ }, tech: ‘css’, path: ‘path/to/file.ext’, level: ‘path/to/level’ }, /* ... */ ], /* ... */ } ``` With this introspection format to easily get a list of files named entity. **What has been done?** * Use `bem-walk` to scan levels. * Use `bem-naming` to get id of BEM entity. * Add `BundleIntrospection` class to work with introspection of levels for one bundle. * Rewrite `levels` tech with `build-flow`. * Use promises with `node.buildState` to avoid scanning the same levels multiple times. * Don't read files for directories (example i18n), it should do `files` tech.
Now the `bem-walk` is used to scan.
Exactly the same benchmarks in `bem-walk` repository
Introspection Format
API moved to bottom of list
Used writable stream instead of promises.
Used `fs.statSync` instead of `fs.stat`.
.pipe(new stream.Writable({ | ||
objectMode: true, | ||
write: function (file, encoding, callback) { | ||
try { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
try catch не оптимизируется же, или врут?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Как иначе обработать fs.statSync
?
Например, когда файл был удалён?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Не, я ж не против, но сделай хелпер:
function tryCatch(tryFn, catchFn) { try { return tryFn(); } catch(e) { catchFn(e); } }
Closed in favor of #253 |
After this change the scan time was the same as before #217.
Example with
project-stub
:v2.2.1
#master
#perf/levels