Recent Releases of https://github.com/statoscope/statoscope
https://github.com/statoscope/statoscope - v5.29.0
Improvements
[webpack-stats-extension-compressed]: support rspack (@dgaponov at #239)[webpack-stats-extension-compressed]: support rspack (@dgaponov at #239)[webpack-ui]: show bundler type and version (webpack or rspack)[webpack-model]: supportrspackVersionfield in compilation type[webpack-model]: addbundlerfield in normalized file[webpack-stats-extension-package-info]: support rspack
Fixes
[webpack-ui]- fix changed modules size in diff-page (@ildar-icoosoft at #233)[webpack-model]: null-chunks handling (@gear54rus at #235)
- TypeScript
Published by smelukov 11 months ago
https://github.com/statoscope/statoscope - v5.28.3 (it's alive 🤘)
Fixes
[webpack-model]- fix node_modules instance path for module-federation modules[stats-validator-plugin-webpack]- fixno-packages-dups-rule to work with module-federation modules
Thanks @nicheinc for support!
- TypeScript
Published by smelukov over 1 year ago
https://github.com/statoscope/statoscope - v5.28.2
Fixes
[webpack-model]- fix collecting chunks in concat modules content (incorrect list of chunks may occur with this bug) (#223)
- TypeScript
Published by smelukov over 2 years ago
https://github.com/statoscope/statoscope - v5.28.1
Fixes
[webpack-model]- revert chunk-asset linking logic from 5.25.1
- TypeScript
Published by smelukov over 2 years ago
https://github.com/statoscope/statoscope - v5.28.0
Features
- update jora from 1.0.0-beta.7 to 1.0.0-beta.8 (see changelog)
lots of new methods and assertions-feature - update discoveryjs from 1.0.0-beta.77 to 1.0.0-beta.78
- TypeScript
Published by smelukov over 2 years ago
https://github.com/statoscope/statoscope - v5.27.0
Features
[webpack-model]- addmodule_retained_modules(module)-helper that returns retained modules by specific module
In other words: retained ones will be removed from bundle along with the module
- [webpack-ui] - support module_retained_modules in module tree. For example, you can see retained modules in the diff-page
- [webpack-ui] - update discoveryjs from 1.0.0-beta.66 to 1.0.0-beta.77 (see changelog)
- [webpack-ui] - expose Discovery namespace
```js
import Statoscope from '@statoscope/webpack-ui';
console.log(Statoscope.Discovery); ```
See usage example in dev.html
- [webpack-ui] - expose Discovery data and view inspector that helps to debug custom statoscope reports
- [webpack-ui] - add npm run dev to develop Statoscope UI more easily
- [stats-validator-reporter-stats-report]: add disableReportCompression-option, disable it will increase the size a lot (false by default) (#210 by @icy0307)
- [report-writer]: use jsonxl to compress stats in binary json (replacement for old solution)
Performance
[webpack-model]- improve initialization performance
- TypeScript
Published by smelukov over 2 years ago
https://github.com/statoscope/statoscope - v5.26.2
Fixes
[webpack-model]- temporary revert long-module-id
- TypeScript
Published by smelukov almost 3 years ago
https://github.com/statoscope/statoscope - v5.26.1
Fixes
[cli]- add inject-extension into cli
- TypeScript
Published by smelukov almost 3 years ago
https://github.com/statoscope/statoscope - v5.26.0
Features
[cli]- addinject-extensioncommand that injects custom stats extension[cli]- addvrulescommand that shows available validation rules that plugins instatoscope.config.jsprovides (#192 by @denisbalyko)
- TypeScript
Published by smelukov almost 3 years ago
https://github.com/statoscope/statoscope - v5.25.1
Fixes
[report-writer]- fix decompression bug (closes #202)[webpack-model]- fix assets collection when CompressionWebpackPlugin is used[webpack-model]- fix trimming long module ids[webpack-ui]- module search now works only for first 500 chars in module name (performance issue)[webpack-ui]- fix incorrect badge for asset modules
- TypeScript
Published by smelukov about 3 years ago
https://github.com/statoscope/statoscope - v5.25.0
Features
[webpack-plugin]- super-huge (up to 30 times) decrease of html-report size[cli]- super-huge (up to 30 times) decrease of html-report size
Fixes
[webpack-model]- trim long module identifier (closes #200)[webpack-ui]- fix descending modules sort on instant lists (related #162)
Thanks
Financial contribution:
- @eps1lon
- @muckrack
- TypeScript
Published by smelukov about 3 years ago
https://github.com/statoscope/statoscope - v5.24.0
Features
[webpack-ui]- replacehighchartsby chart.js
Usage example:
json
{
"view": "box",
"options": { "height": "400px" },
"content": {
"view": "chart",
"data": "{ any chart.js options here }"
}
}
- [webpack-ui] - add error-view:
json
{
"view": "error",
"message": "Some error message"
}
- [cli] - js-files can be used in customReport-arg
- [helpers] - add options-parameter into formatData-helper just like Date.toLocaleString
Refactor
[webpack-model]- remove stats validation (increase startup performance)
- TypeScript
Published by smelukov over 3 years ago
https://github.com/statoscope/statoscope - v5.23.0
Deps
[helpers]- Updatejorato 1.0.0-beta.7[webpack-ui]- Update@discoveryjs/discoveryto 1.0.0-beta.66[webpack-ui]- Updatehighchartsto 10.2.0
Fixes
[webpack-model]- refactor chunk graph building (fixes bugs of chunks relations accuracy)
- TypeScript
Published by smelukov over 3 years ago
https://github.com/statoscope/statoscope - v5.22.0
Features
[cli]- add--custom-reportand--configargs forgenerateandservecommands (#157 by @amalitsky)[config]- addgenerate.reportsfield (#157 by @amalitsky)[webpack-model]- added helpers:asset_getSize(asset: NormalizedAsset, hash: string, useCompressed: boolean): Sizeassets_getTotalSize(assets: NormalizedAsset[], hash: string, useCompressed: boolean): Sizeentrypoint_getChunks(entry: NormalizedEntrypointItem): NormalizedChunk[]entrypoint_getInitialChunks(entry: NormalizedEntrypointItem): NormalizedChunk[]entrypoint_getInitialSize(entry: NormalizedEntrypointItem, hash: string, useCompressed: boolean): Sizeentrypoint_getAsyncChunks(entry: NormalizedEntrypointItem): NormalizedChunk[]entrypoint_getAsyncSize(entry: NormalizedEntrypointItem, hash: string, useCompressed: boolean): Sizeentrypoint_getAssets(entry: NormalizedEntrypointItem): NormalizedAsset[]entrypoint_getInitialAssets(entry: NormalizedEntrypointItem): NormalizedAsset[]entrypoint_getAsyncAssets(entry: NormalizedEntrypointItem): NormalizedAsset[]resolveCompilationByAsset(asset: NormalizedAsset, filename: string): NormalizedCompilation | nullresolveCompilationByChunk(chunk: NormalizedChunk, filename: string): NormalizedCompilation | nullresolveCompilationByModule(module: NormalizedModule, filename: string): NormalizedCompilation | nullresolveCompilationByEntrypoint(entry: NormalizedEntrypointItem, filename: string): NormalizedCompilation | null
Fixes
[webpack-ui]- fix dashboard data[webpack-model]- fix handling chunks with no files (#158 by @amalitsky)
- TypeScript
Published by smelukov over 3 years ago
https://github.com/statoscope/statoscope - v5.20.1
Fixes
[webpack-model]- move @types/webpack into dev deps
- TypeScript
Published by smelukov about 4 years ago
https://github.com/statoscope/statoscope - v5.20.0
Performance
[webpack-model]- huge performance improvement for stats normalization
Features
[webpack-plugin]- addnormalizeStatsthat reduces stats size[webpack-ui]-optionsanddataprops forchart-view as jora-query
Fixes
[cli]- minor fix forgenerate-command output
Other
[webpack-ui]- use the brand new Statoscope logo[report-writer]- use logo as loading spinner
- TypeScript
Published by smelukov about 4 years ago
https://github.com/statoscope/statoscope - v5.19.3
Fixes
[stats-extension-package-info]- collect more package versions[webpack-stats-extension-package-info]- collect more package versions
- TypeScript
Published by smelukov about 4 years ago
https://github.com/statoscope/statoscope - v5.19.2
Fixes
[webpack-ui]- fix chunk modules delta
- TypeScript
Published by smelukov about 4 years ago
https://github.com/statoscope/statoscope - v5.19.1
Fixes
[webpack-stats-extension-package-info]- collect more package versions
- TypeScript
Published by smelukov about 4 years ago
https://github.com/statoscope/statoscope - v5.19.0
Feature
[webpack-model]- smart handling for concat modules container id This improves modules diff.[helpers]- add id modifier to indexer[cli]- addinitandcreatecommands (#139 by @OrlovAlexei)
- TypeScript
Published by smelukov about 4 years ago
https://github.com/statoscope/statoscope - v5.18.0
Features
[config]- more useful error message if any of plugins or reporters from statoscope config is not installed (#137 by @amalitsky)
Fixes
[webpack-model]- fix d.ts
- TypeScript
Published by smelukov over 4 years ago
https://github.com/statoscope/statoscope - v5.17.0
Features
[webpack-model]- support grouped modules (stats: { all: true }in webpack 5)[webpack-model]- improvedchunkNamehelper NowchunkNamehelper returns more accurate chunk name[webpack-model]- addassetChunkNamehelper
Refactor
[webpack-model]- total stats preparing refactoring
- TypeScript
Published by smelukov over 4 years ago
https://github.com/statoscope/statoscope - v5.16.0
Features
[cli]- Supportreference-arg forgenerateandservecommands (#134)[webpack-ui]- Useinputandreferencefiles by default for diff page (#134)[webpack-ui]- Add details to chunks-tab (Added/Removed/Changed modules) at diff page. (#133 by @andreygmc)
- TypeScript
Published by smelukov over 4 years ago
https://github.com/statoscope/statoscope - v5.15.0
Features
[stats-validator-plugin-webpack]- adddescriptionandalternativesforrestricted-packagesrule (#129 by @amalitsky)
- TypeScript
Published by smelukov over 4 years ago
https://github.com/statoscope/statoscope - 5.14.1
Fix
Republish all the packages because of npm bug
No changes
- TypeScript
Published by smelukov over 4 years ago
https://github.com/statoscope/statoscope - v5.14.0
Features
[cli]- addquerycommand (#130)[cli]- addinject-reportcommand
Fixes
[webpack-ui]- use report id when no report name is specified
Refactor
[stats-extension-custom-reports]- handleReport returns boolean instead of throw an error
- TypeScript
Published by smelukov over 4 years ago
https://github.com/statoscope/statoscope - v5.13.1
5.13.1 (1 October 2021)
Fixes
[types]- rename .ts to .d.ts
- TypeScript
Published by smelukov over 4 years ago
https://github.com/statoscope/statoscope - v5.13.0
Features
[webpack-ui]- update highcharts to v9[webpack-ui]- addbox-view to build flex layoutjs [{ view: 'box', content: [ { view: 'box', content: 'struct' }, { view: 'box', content: 'struct' }, { view: 'box', content: 'struct' }, ] }, { view: 'box', options: { direction: 'column' }, content: [ { view: 'box', content: 'struct' }, { view: 'box', content: 'struct' }, ] }]There are some supported options:displaydirectionshrinkgrowalignItemsjustifyItemsalignContentjustifyContentwidthheightpaddingmargin
[webpack-model]- addresolveExtensionByCompilation-helper - resolves extension by id and compilation[webpack-model]-resolveExtension*resolves extension even if the extension has no API (not warning anymore)[webpack-model]- add StatsExtensionWebpackAdapter type[webpack-plugin]- addextensions-options (see plugin readme for more info)
Refactor
[webpack-model]-resolveExtensionresolves extension by its name and filename that the extension attached to[webpack-stats-extension-compressed]- implement webpack stats extension interface[webpack-stats-extension-package-info]- implement webpack stats extension interface
- TypeScript
Published by smelukov over 4 years ago
https://github.com/statoscope/statoscope - v5.12.1
Fixes
[types]- add types into package
- TypeScript
Published by smelukov over 4 years ago
https://github.com/statoscope/statoscope - v5.12.0
Features
[cli]- output is no longer a required argument (tmp directory is used by default) (#119 by @OrlovAlexei)
Fixes
[webpack-model]- fix crash when unknown extension is used[webpack-model]- fix crash with regenerator runtime
- TypeScript
Published by smelukov over 4 years ago
https://github.com/statoscope/statoscope - v5.11.2
Fixes
[webpack-ui]- fixshouldExcludeResource-helper
Now returns true if no regexp specified
- TypeScript
Published by smelukov over 4 years ago
https://github.com/statoscope/statoscope - v5.11.1
Build
[webpack-ui]- use default target for babel-env (support more browsers)
- TypeScript
Published by smelukov over 4 years ago
https://github.com/statoscope/statoscope - v5.11.0
Features
[webpack-ui]- add new options to specify a regexp
All assets matched the regexp will be ignored from download size/time calculation
- [stats-validator-plugin-webpack] - add asset-type exclude to diff-entry-download-size-limits-rule
- [stats-validator-plugin-webpack] - add asset-type exclude to diff-entry-download-time-limits-rule
- [stats-validator-plugin-webpack] - add asset-type exclude to entry-download-size-limits-rule
- [stats-validator-plugin-webpack] - add asset-type exclude to entry-download-time-limits-rule
- TypeScript
Published by smelukov over 4 years ago
https://github.com/statoscope/statoscope - v5.10.4
Fixes
[cli]- use>=12.0.0instead of^12.0.0in engines.node
- TypeScript
Published by smelukov over 4 years ago
https://github.com/statoscope/statoscope - v5.10.3
Fixes
[stats-validator-plugin-webpack]- use compilation hash instead of compilation name
- TypeScript
Published by smelukov over 4 years ago
https://github.com/statoscope/statoscope - v5.10.2
Fixes
[webpack-stats-extension-package-info]- fix crash if there is no context in stats config
- TypeScript
Published by smelukov over 4 years ago
https://github.com/statoscope/statoscope - v5.10.1
Fixes
[stats-validator-plugin-webpack]- fixdiff-deprecated-packagesrule[stats-validator-plugin-webpack]- fixdiff-deprecated-modulesrule
- TypeScript
Published by smelukov over 4 years ago
https://github.com/statoscope/statoscope - v5.10.0
Features
[webpack-ui]- addchart-view (based on highcharts)jsonc { view: 'chart, options: [/* any highcharts options */] }
- TypeScript
Published by smelukov over 4 years ago
https://github.com/statoscope/statoscope - v5.9.1
Fixes
[webpack-plugin]- fix crash if there is no context in stats config
- TypeScript
Published by smelukov over 4 years ago
https://github.com/statoscope/statoscope - v5.9.0
Features
[stats-extension-custom-reports]- add package for passing custom reports to the UI (#108)[webpack-plugin]- support custom reports (#108)[webpack-ui]- support custom reports (#108)[helpers]- supportlock/unlockforResolver(#107) By default, all the resolvers is locked (no items can be added to resolver storage)ts const resolver = makeResolver(modules, m => m.identifier); modules.push(fooModule); resolver('foo'); // null resolver.unlock(); // allow to fetch resolver storage for new elements modules.push(fooModule); resolver('foo'); // fooModuleIn other words, locked resolver remembers its source items and ignores any source changes.
It is useful for performance.
- [helpers] - add Indexer to build an index (#108)
Index is more complex of resolver. It provides some API to manipulate its storage:
ts
const moduleIndex = makeIndex(module => module.identifier); // no source needed
moduleIndex.add(fooModule);
moduleIndex.get('foo'); // fooModule
moduleIndex.get('bar'); // null
moduleIndex.add(barModule);
moduleIndex.get('bar'); // barModule
moduleIndex.getAll(); // [fooModule, barModule]
[stats-extension-compressed]- support indexer (#108)[stats-extension-package-info]- support indexer (#108)[stats-extension-stats-validation-result]- support indexer (#108)[config]- addrequireConfig(#108)[cli]- supportrequireConfig(#108)[cli]- addmakeReplacerhelper to create json replacer (#107)[webpack-model]- add__statoscope.contextfield (#107)[report-writer]- remove context path from stats (it makes all the path relative from context) (#107)[webpack-plugin]- remove context path from stats (it makes all the path relative from context) (#107)[webpack-stats-extension-package-info]- remove context path from stats (it makes all the path relative from context) (#107)
Refactor
[webpack-model]- use module.identifier to resolve a module (#107)[webpack-model]- decouple extension and compilation (#108)
Extensions have attached to files, not to compilations
[webpack-ui]- usemodule.identifierto resolve a module (#107)[webpack-stats-extension-compressed]- usemodule.identifierto resolve a module (#107)[stats-validator-plugin-webpack]- usemodule.identifierto resolve a module (#107)
Bugfix
[webpack-model]- not fail when incomplete stats have used
- TypeScript
Published by smelukov over 4 years ago
https://github.com/statoscope/statoscope - v5.8.1
Fixes
[stats-validator-plugin-webpack]- fix chunk resolving indiff-entry-download-size-limitsrule (#106 by @nnn3d )[stats-validator-plugin-webpack]- fix chunk resolving indiff-entry-download-time-limitsrule (#106 by @nnn3d )
- TypeScript
Published by smelukov over 4 years ago
https://github.com/statoscope/statoscope - v5.8.0
Features
[cli, webpack-plugin, stats-validator-reporter-stats-report]- generate UI-reports with normalized stats (#104) It reduces generated UI-report size (sometimes it is more than 10x smaller)[webpack-model, webpack-ui]- support normalized UI-reports (#104)[stats-validator-plugin-webpack]- show changed reasons in diff-deprecated-modules/packages rules
Fixes
[webpack-model]- merge modules chunks info to collect more truthy info about modules chunks (#104)
- TypeScript
Published by smelukov over 4 years ago
https://github.com/statoscope/statoscope - v5.7.3
Fixes
[webpack-ui]- remove modules duplicates from modules list
Performance
[webpack-ui]- improve performance ofentriesandmodulestabs on the main page
- TypeScript
Published by smelukov over 4 years ago
https://github.com/statoscope/statoscope - v5.7.2
Fixes
[webpack-ui]- correct set of modules inInitial Chunkstab on theentrypage (closes #102)
Chore
[config]- improve error message
- TypeScript
Published by smelukov over 4 years ago
https://github.com/statoscope/statoscope - v5.7.1
Fixes
[webpack-model]- add missed json into the package
- TypeScript
Published by smelukov over 4 years ago
https://github.com/statoscope/statoscope - v5.7.0
Features
[stats-validator]- add package for validating stats[stats-validator-plugin-webpack]- add stats-validator plugin with webpack-rules[stats-validator-reporter-console]- add stats-validator reporter to output results into console[stats-validator-reporter-stats-report]- add stats-validator reporter to output results into descovery-based UI[stats-extension-stats-validation-result]- add stats extension to pass validation messages info descovery-based UI[config]- add package that contains config-helpers[webpack-ui]- support new validation results- support
stats-extension-stats-validation-result - show badge in the main page
- new page with validation results
- new page with details of a validation message
- mark entities (modules, chunks, packages, etc.) that have messages from the validator
- show validation messages of the entities pages (modules, chunks, packages, etc.)
- support
[webpack-ui]- add some jora-helpersresolveEntrypoint(id: string, hash: string): NormalizedEntrypointItem | nullResolve entrypoint by its nameresolveFile(id: string): NormalizedFile | nullResolve file by its nameresolveInputFile(): NormalizedFile | nullResolve file withinput.jsonresolveReferenceFile(): NormalizedFile | nullResolve file withreference.jsonvalidation_getItems(hash?: string, relatedType?: RelatedItem['type'] | null, relatedId?: string | number): Item[]Get validation messagesvalidation_getItem(id?: number, hash?: string): Item | nullGet validation messagevalidation_resolveRelatedItem(item?: RelatedItem, hash?: string): ResolvedRelatedItemResolve an entity (module, chunk, etc.) that related with some messagevalidation_resolveRule(name?: string, hash?: string): RuleDescriptor | nullResolve detail info about a rule
[cli]- support new validators invalidatecommand- add
reference-parameter - add
config-parameter - use
stats-validatorpackage
- add
[types]- add package with statoscope ts-types[helpers]- addget-parameter intomakeResolver-function[helpers]- addasciiTree-helper that generate ASCII tree from object-tree (useful for TTY-reporters)[helpers]- add a bunch of useful jora-helperstypeof(value: unknown): string
works like native
typeofoperator -isNullish(value: unknown): booleanreturns
trueifvalueisnullorundefined-isArray(value: unknown): booleanreturns
trueifvalueis array -useNotNullish<T>(values: readonly T[]): T | nullreturn first not-nullish element from
values-array ornull([null, 123].useNotNullish() = 123) -serializeStringOrRegexp(value?: string | RegExp): SerializedStringOrRegexp | nulltransform string or regexp into json-compatible format -
deserializeStringOrRegexp(value?: SerializedStringOrRegexp | null): string | RegExp | nullreverse the result of
serializeStringOrRegexp-semverSatisfies(version: string | SemVer, range: string | Range): booleanreturns
trueifversionsatisfied of range -isMatch(a?: string, b?: string | RegExp): booleanreturns
trueifamatchesb-exclude<T>( items: readonly T[], params?: { exclude?: Array<string | RegExp>; get?: (arg: T) => string | undefined; } ): T[]Helps to exclude elements. Examples: -['foo', 'bar', 'foo'].exclude({exclude: 'foo'}) = ['bar']-[fooCompilation, barCompilation, bazCompilation].exclude({exclude: /foo|bar/, get: <name>}) = [bazCompilation]-diff_normalizeLimit(limit?: number | Limit | null): Limit | nullNormalize thelimit-diff_isLTETheLimit(valueDiff: ValueDiff, limit?: number | Limit | null): booleanReturnstrueifvalueDiffhas not been exceeded thelimit
Refactor
[report-writer]- movetransformfunction fromcli[report-writer]-to-parameter oftransformfunction now is required[report-writer]-from-parameter oftransformmight be file name or stats object[cli]- usetransformfromreport-writer[helpers]- moveprepareWithJorafromwebpack-model[webpck-model]- useprepareWithJorafromhelpers
Fixes
[helpers]- fixmax-parameter bug ingraph_findPaths-helper
Deprecate
[cli]-validatorparameter invalidatecommand (use statoscope config with rules instead)
- TypeScript
Published by smelukov over 4 years ago
https://github.com/statoscope/statoscope - v5.6.2
Fixes
[webpack-model]- calculating modules size onfoam-tree-helper[webpack-ui]- show modules size on foam-tree map
- TypeScript
Published by smelukov over 4 years ago
https://github.com/statoscope/statoscope - v5.6.1
Fixes
[helpers]fix handlingmax-property inGraph.findPaths
- TypeScript
Published by smelukov over 4 years ago
https://github.com/statoscope/statoscope - v5.6.0
Features
[webpack-ui]add entrypoint tab into the module page. How it's possible to inspect all the paths from a specific module to an entrypoint[webpack-ui]add entrypoint into issuer path[helpers]addGraph,NodeandSolutionPathclasses to solve the graph-specific tasks. Add a few jora-helpers:graph_getNode(id, graph)- get a node by its idgraph_getPaths(from, graph, to, max)- get all ormaxpossible paths fromfromnode totonode
[webpack-model]adddepsfor every module. There are all the modules that the module requires[webpack-model]adddepfor every entrypoint. There is a module that an entrypoint requires[webpack-model]addresolvedEntryandresolvedEntryNamefor entrypoint-reasons[webpack-model]add a few jora-helpers:getModuleGraph(hash)- get module graph for specified compilationmoduleGraph_getEntrypoints(module, graph, entrypoints, max)- get all ormaxentrypoints ofmodulemoduleGraph_getPaths(from, graph, to, max)- get all ormaxpossible paths fromfrommodule totomodule
Fixes
[webpack-ui]fix settings error when multiple tabs opened
- TypeScript
Published by smelukov over 4 years ago
https://github.com/statoscope/statoscope - v5.5.1
Fixes
[report-writer]rollback to sync stream polling model[webpack-plugin]broken html report
- TypeScript
Published by smelukov over 4 years ago
https://github.com/statoscope/statoscope - v5.5.0
Features
[webpack-plugin]add new propertysaveOnlyStats[webpack-plugin]add new propertysaveReportTo(as a replacement forsaveTo)
Refactor
[webpack-plugin]refactoring to make code more flexible[report-writer]refactor work with the streams
- TypeScript
Published by smelukov over 4 years ago
https://github.com/statoscope/statoscope - v5.4.3
Fixes
[webpack-ui]handle unresolved module reasons for a package[webpack-stats-extension-package-info]match package version for webpack 4
- TypeScript
Published by smelukov over 4 years ago
https://github.com/statoscope/statoscope - v5.4.2
Fixes
[webpack-plugin]sometimes a report was opening before it written to the disk[webpack-stats-extension-compressed]fix fails on reexport usage on webpack 4[webpack-stats-extension-package-info]taking into account that webpack 4 uses absolute path for some module names
- TypeScript
Published by smelukov over 4 years ago
https://github.com/statoscope/statoscope - v5.4.1
Fixes
[webpack-model]stats extensions now works for child compilations
- TypeScript
Published by smelukov over 4 years ago
https://github.com/statoscope/statoscope - v5.4.0
Features
[ui-webpack]use as an alias towebpack-uiandwebpack-plugin[webpack-plugin]create the directory before writing the stats and report[webpack-ui]add package version-diff Adds the badges like:major upgrade from x.x.x[helpers]addsemverGT-helper[helpers]addsemverGTE-helper[helpers]addsemverLT-helper[helpers]addsemverLTE-helper[helpers]addsemverEQ-helper[helpers]addsemverDiff-helper[helpers]addsemverParse-helper[webpack-model]addcontext-param to jora query-method (#82)[cli]addcontext-param to jora query-method (#82)
Fixes
[webpack-stats-extension-compressed]fix CssModule handling[webpack-stats-extension-compressed]fix temporary assets handling
Refactor
[helpers]moveformatDiff-helper fromwebpack-ui
- TypeScript
Published by smelukov over 4 years ago
https://github.com/statoscope/statoscope - v5.3.1
Fixes
- fix all @statoscope-deps version for not to old versions
- TypeScript
Published by smelukov over 4 years ago
https://github.com/statoscope/statoscope - v5.3.2
Fixes
[report-writer]returnoptions.scriptsasArray<stirng, Item>
- TypeScript
Published by smelukov over 4 years ago
https://github.com/statoscope/statoscope - v5.3.0
Features
[webpack-plugin]collect compressed (e.g. gzip) size of the resources (assets and modules)
There is a new compressor - option that can be false | 'gzip' | ['gzip', ZlibOptions] | CompressFunction:
'gzip'(default) - compress all the resources with gzip (compression level - 6) and collect the compressed sizes['gzip', ZlibOptions]- the same asgzipbut with custom zlib settingsCompressFunction- a function that takes source as an input and should return compressed size for this resource (useful if you want to use a non-gzip compressor)false- don't collect compressed sizes
It uses
webpack-stats-extension-compressedunder the hood
[webpack-plugin]collect packages versions
It uses
webpack-stats-extension-package-infounder the hood
[webpack-ui]taking compressed (e.g. gzip) size of the resources into account
There is a new setting to taking resources compressed size into account.
If enabled then all the sizes will be shown as compressed.
New jora-helpers:
getModuleSize(module, hash)return compressed or normal module sizegetAssetSize(asset, hash)return compressed or normal asset size
It uses
stats-extension-compressedunder the hood and works only when the stats-file was taken fromwebpack-plugin@>=5.3or any source that usesstats-extension-compressed
[webpack-ui]taking packages versions into account and output these in all the package items
Also, added instance version into compilations.nodeModules.instance
It uses
stats-extension-package-infounder the hood and works only when the stats-file was taken fromwebpack-plugin@>=5.3or any source that usesstats-extension-package-info
[webpack-ui]download time measure
There are two new settings to select network speed and assets inject type. A download time for assets/chunks/entrypoints will be calculated based on specified network speed and assets inject type.
There are two assets inject types:
sync: download time =sum(downloadTime(assets))Download time is a sum of the download time of all the assetsasync: download time =max(downloadTime(assets))Download time is a download time of most heavy asset (usefull ifasync/deferused to inject your assets)
The default network type is 3G Fast (1.37 MBit/s) (like in Chromium).
Assets inject type is sync by default.
[webpack-ui]addcompact-property toasset/chunk/module/entry-item-widget
This property removes all the badges from the entity item
[webpack-ui]addEntrypointstab ondiff-page
Honestly, I just forgot to enable this tab a few releases ago 🙈
[stats-extension-compressed]extension for collecting compressed resource sizes
It allows compressing specified resource content (string or Buffer) with gzip or any other compressor.
Also, it contains the API to generate and extract this info.
[webpack-stats-extension-compressed]webpack adapter forstats-extension-compressed
It allows collecting compressed resource sizes from webpack compilation
[stats-extension-package-info]extension for collecting packages versions
It allows compressing specified resource content (string or Buffer) with gzip or any other compressor.
Also, it contains the API to generate and extract this info.
[webpack-stats-extension-package-info]webpack adapter forstats-extension-package-info
It allows collecting package versions from webpack compilation
[webpack-model]addedresolveExtension(name)jora-helper that returns extension API[webpack-model]supportstats-extension-package-infoextension
There is a new jora-helpers:
- getPackageInstanceInfo(package, instancePath, hash) that returns a package instance information
[webpack-model]supportstats-extension-compressedextension
There are new jora-helpers:
- getModuleSize(module, compressed?, hash?) returns compressed or normal module size
- getAssetSize(asset, compressed?, hash?) returns compressed or normal asset size
[webpack-model]added jora-helpers to getting network type and download speed:getNetworkTypeInfo(networkType: string)return full info about specified network by its name (full list of type you can find at network-type-list.ts)getNetworkTypeName(networkType: Item)return full name for specified networkgetDownloadTime(size: number, networkType: string)calculate download time based on selected network type
[helpers]addlocale-parameter toformatDate-helper[cli](validate): useinfo-type for messages by default[stats]a new package that contains Statoscope own stats format (extension-entity for now, but there are will be more entities)[extensions]a new package that contains Statoscope extensions toolkit[report-writer]add Piper - a proxy to ensure that all stream consumers have got a chunk
Fixes
[webpack-model]fix cases in normalization when nocompilation.modules[webpack-model]fix normalization ofchunk.children[webpack-model]fixisRoot-field for node-modules instances
isRoot was falsy positive if the module name not starts from .
[webpack-plugin]fixsaveStatsTo
Now it works
[webpack-ui]fix packages instances list ondiff-page
There was undefined instead of instances links
[webpack-ui]fix modules diff calculation[cli](validate): use console.info forinfo-type messages
Improvements
[webpack-ui]better sorting of package instances
Root-instances goes first
[webpack-ui]fix loading-styles
Refactor
[webpack-ui]refactor diff-page to make it more flexible and extendable
- TypeScript
Published by smelukov over 4 years ago
https://github.com/statoscope/statoscope - v5.2.0
Features
[webpack-ui]- showasset modulebadge for asset modules (#72)[webpack-model]- usechunk.nameinchunkName-helper[webpack-plugin]- makeoptions-parameter as optional
Fixed
[webpack-plugin]- (crit) broken html report[webpack-plugin]- (crit) fix takingadditionalStatsinto account[webpack-model]- makecontext-parameter inPrepared.queryas optional (types)[webpack-model]- makestats-parameter instatName-helper as optional (types)
- TypeScript
Published by smelukov over 4 years ago
https://github.com/statoscope/statoscope - v5.1.0
Fixes
[webpack-ui]- fix popup positioning when page was scrolled
Refactoring
[cli]- migrate to typescript[webpack-plugin]- migrate to typescript[webpack-ui]- migrate to typescript[webpack-model]- migrate to typescript[report-writer]- migrate to typescript[helpers]- migrate to typescript
- TypeScript
Published by smelukov over 4 years ago
https://github.com/statoscope/statoscope - v5.0.1
Fixes
[cli]fixgeneratecommand[cli]fix readme[webpack-plugin]npm audit fix[webpack-ui]npm audit fix
- TypeScript
Published by smelukov over 4 years ago
https://github.com/statoscope/statoscope - v5.0.0
Features
[ui-webpack]BREAKING: deprecated in favor of new packagewebpack-ui[cli]new package with CLI tools (validate, generate, serve)[webpack-plugin]new package with webpack plugin that generated statoscope report
- TypeScript
Published by smelukov over 4 years ago
https://github.com/statoscope/statoscope - v4.1.2
Bugfix
UI
- Module page: dependencies-block
- TypeScript
Published by smelukov over 4 years ago
https://github.com/statoscope/statoscope - v4.1.1
Bugfix
UI
- Diff modules bug
- TypeScript
Published by smelukov almost 5 years ago
https://github.com/statoscope/statoscope - v4.1.0
Improvement
UI
- Improve starting up performance at 25% (#6966139)
- Huge improvement of diff performance (#1b8f346)
- Hide useless tabs at the diff page (#2130c74)
For example, if there is no diff in the modules, then no Modules-tab will be shown
Bugfix
- Use module.name instead of module.identifier to more accuracy diff
- TypeScript
Published by smelukov almost 5 years ago
https://github.com/statoscope/statoscope - v4.0.0
Changes
UI
- BREAKING: remove separated-styles build
Improvement
UI
- Handle all child compilations (#46d813c)
Now Statoscope will handle all child compilation.
It's useful for cases like https://github.com/GoogleChrome/workbox/issues/2785
By default, Statoscope doesn't show any child compilation, but there is a setting
Hide child compilationsto change it. - Show chunk file size (#47) Now Statoscope shows a little more info about a chunk
Internals
- Update discovery
- Update build stack (webpack/babel/etc) (#3371565)
- Update foamtree (#9fb2116)
- TypeScript
Published by smelukov almost 5 years ago
https://github.com/statoscope/statoscope - v3.5.0
Improvement
Plugin
- Improve stats normalization performance (#43)
- TypeScript
Published by smelukov about 5 years ago
https://github.com/statoscope/statoscope - v3.4.0
Improvement
- Huge improvement for HTML-report loading time (3824a83)
Bugfix
- Fix ignoring
elementparameter on Statoscope init-function #42
- TypeScript
Published by smelukov about 5 years ago
https://github.com/statoscope/statoscope - v3.3.0
Features
- Support stats with any size.
JS engines have a string size limit (e.g. 512mb for V8). It means that JSON with a size bigger than this limitation can't be parsed with JSON.parse
Now Statoscope uses a streaming JSON parsing (thanks to json-ext) to ignore this limitation.
Plugin
- Add
saveStatsTo: stringoption
You can save a webpack stats with saveStatsTo: '/abs/path/to/stats.json'
Use [name] and [hash] placeholders to replace these by compilation.name and compilation.hash
- Add
additionalStats: string[]option
You can load any stats to Statoscope to switch between them or diff these on the Diff page.
additionalStats: ['/abs/path/to/previous/stats.json']
- Add
statsOptions: Objectoption
You can override your webpack-config stats option by statsOptions option
statsOptions: { all: true, source: false }
All stats-options see at docs
- Add
watchMode:booleanoption
By default, Statoscode does not generate a report if webpack run in watch-mode. Set watchMode: true to generate a report in watch-mode
- Add
[name]and[hash]placeholders tostaveTooption to replace these bycompilation.nameandcompilation.hash
Bugfix
UI
- Fix resolving module resource that starts with
..
- TypeScript
Published by smelukov about 5 years ago
https://github.com/statoscope/statoscope - v3.2.0
Features
Added webpack plugin
Now you may use Statoscope as a webpack plugin:
webpack.config.js: ```js const StatoscopeWebpackPlugin = require('@statoscope/ui-webpack');
config.plugins.push(new StatoscopeWebpackPlugin()); ```
See the readme for more information.
Misc
- Update @discoveryjs/discovery to 1.0.0-beta.52
- TypeScript
Published by smelukov about 5 years ago
https://github.com/statoscope/statoscope - v3.1.0
Features
- Goto first compilation when load multiple stats or a stat with multiple compilations
- TypeScript
Published by smelukov about 5 years ago
https://github.com/statoscope/statoscope - v3.0.0
[Breaking]: Change data structure
Now, Statoscope normalize the stats to a specific standardized structure.
You can see it at Make report page.
Every stat has some basic info (filename, webpack version) and a list of the compilations.
The modules/chunks/assets are resolved now
Statoscope init-function argument also changed:
```js import init from '@statoscope/ui-webpack'; import stats from 'path/to/stats.json'
init({ name: "stats.json", data: stats }); ```
Stats diff
Statoscope provides a tool to diff the stats. Load two or more stats to diff it.
Support multiple stat files
Now you can load multiple stats and switch between them.
Support multi-config projects
If you have a multi-config project (e.g. client and server described in one config) then it will be splitter into a few compilations with possibility to switching between them.
Rework main page dashboard
Add some indicators:
Total size- size of all the assets of your bundleInitial size- size of all the initial assets of your bundlePackages size- size of allDuplicate modules- total modules with the same sourceBuild Time
Remove chunk groups indicator
Add duplicate module info
Now you can see all the modules with the same source
Add stats validation
Add deopt block to a module page
Add module issuer path
improve filtration speed
- TypeScript
Published by smelukov about 5 years ago
https://github.com/statoscope/statoscope - v2.2.0
Features
- ctrl + click on foam-tree opens a package or module detail page,
- improved popup markup
- allow passing custom root element to init the UI
- add style-less dist
- TypeScript
Published by smelukov over 5 years ago
https://github.com/statoscope/statoscope - v2.1.2
Bugfix
- correct parsing modules name with absolute path
- TypeScript
Published by smelukov over 5 years ago
https://github.com/statoscope/statoscope - v2.1.1
Bugfix
- ignore top-level modules in stats and collect these by the chunks
- use original module name if can't normalize it
- fix exception when mouse leave a foam-tree
- TypeScript
Published by smelukov over 5 years ago
https://github.com/statoscope/statoscope - v2.1.0
Features
- add modules reasons to the package tree
- TypeScript
Published by smelukov over 5 years ago
https://github.com/statoscope/statoscope - v2.0.1
Bugfix
- fix module page when module id is number
- TypeScript
Published by smelukov over 5 years ago
https://github.com/statoscope/statoscope - v2.0.0
- brand new webpack analyzer, webpack-runtime-analyzer was deprecated
- TypeScript
Published by smelukov over 5 years ago
https://github.com/statoscope/statoscope - v1.5.0
UI
- supported sorting for the tables (#16)
- added modules stat at the top of the table in detail page (#16)
- TypeScript
Published by smelukov almost 9 years ago
https://github.com/statoscope/statoscope - v1.4.3
- normalize file path on windows (fixed #14, thanks to @lahmatiy)
- fix issue with scrollbars on body on windows (@lahmatiy)
- TypeScript
Published by smelukov almost 9 years ago
https://github.com/statoscope/statoscope - v1.4.2
Bump rempl version
- TypeScript
Published by smelukov almost 9 years ago
https://github.com/statoscope/statoscope - v1.4.1
Support new rempl environment implementation
- TypeScript
Published by smelukov almost 9 years ago
https://github.com/statoscope/statoscope - v1.4.0
Source map support
Now your favorite editor can open exactly the place (file, line and column) where some module is required or requiring some other module:
- enable source-map in your webpack config (e.g. devtool: 'source-map')
- click on some Required module in details page withholding shift key and your editor will open the place (file, line and column) where clicked module was required by a filtered module
- click on some Occurrences module in details page withholding shift key and your editor will open the place (file, line and column) where clicked module are requiring filtered module
- TypeScript
Published by smelukov almost 9 years ago
https://github.com/statoscope/statoscope - v1.3.1
Fixed crash on webpack 1.x
- TypeScript
Published by smelukov almost 9 years ago
https://github.com/statoscope/statoscope - v1.3.0
Whats new
Open in editor
You can open any bundle file in you favorite editor. Just set the EDITOR variable in your environment then you will may click on any file path withholding shift key to open the file in a chosen editor.
For example: export EDITOR=sublime && webpack -w
For more information about supported editors see open-in-editor documentation.
More details about the modules
Now, Webpack Runtime Analyzer has a new page that displays more useful details about the modules.

In the text input, you can choose a module or a file which info you want to see. Just start typing module/file name and choose it from the suggestion list.
In the table you can see some modules statistic:
Require
Displays modules are required by chosen module/file.
Occurrences
Displays modules are requiring chosen module/file.
Retained
Displays modules that required by chosen module/file recursively.
For example, we have three modules: foo, bar and baz.
If foo requires bar and bar requires baz then:
- retained of foo is 2 (bar and baz)
- retained of bar is 1 (baz)
- retained of baz is 0
Exclusive
Displays modules are required only by this module/file and by all its dependencies recursively.
For example, we have three modules: foo, bar and baz.
Case 1: If foo requires bar then foo exclusive is 1 because no more modules that require bar.
Case 2: If foo and bar requires baz then:
- foo exclusive is 0 because bar also requires baz.
- bar exclusive is 0 because foo also requires baz.
Case 3: If foo requires bar and bar requires baz then:
fooexclusive is2because no more modules that requirebarandbazbarexclusive is1because no more modules that requirebaz
Controls
- click on a module name to view detail info about the module
- click on a module name withholding
shift-key to open a file that related with this module in your editor
More integration with Atom Editor
If you run Webpack Runtime Analyzer inside Atom Editor then Details page will react to switching of current editing file.

Other changes
- file map now ignores
hide 3rd party modulesand display all files of all the modules - fixed bug when the plugin is working only in non-watch mode when watchModeOnly is false
- TypeScript
Published by smelukov almost 9 years ago
https://github.com/statoscope/statoscope - v1.2.0
Whats new
Glad to introduce to you a big update. There are several important features:
New file map
Old and ugly file map was replaced by pretty cool FormTree library.

Double click will expose a clicked group, ESC-key will return the map to root.
Rempl server can start automatically
Before this release, you needed to install rempl server separately and start it manually before starting Webpack Runtime Analyzer. But now, you can pass mode: 'standalone' to the plugin options and rempl server will start automatically when Webpack Runtime Analyzer is started. After the server is started, you will see server URL in your console with webpack building output. Moreover, you can pass open: true to the plugin options and UI will open automatically in your default browser.
More useful module info
Now you can see module Occurrences, Retained and Exclusive properties.
Occurrences
Displays how many modules require this module.
Retained
Displays how many modules are required by this module and by all its dependencies (recursive).
For example, we have three modules: foo, bar and baz.
If foo requires bar and bar requires baz then:
- retained of foo is 2 (bar and baz)
- retained of bar is 1 (baz)
- retained of baz is 0
Exclusive
Displays how many modules are required only by this module and by all its dependencies (recursive).
For example, we have three modules: foo, bar and baz.
Case 1: If foo requires bar then foo exclusive is 1 because no more modules that require bar.
Case 2: If foo and bar requires baz then:
- foo exclusive is 0 because bar also requires baz.
- bar exclusive is 0 because foo also requires baz.
Case 3: If foo requires bar and bar requires baz then:
fooexclusive is2because no more modules that requirebarandbazbarexclusive is1because no more modules that requirebaz
Integration with Atom editor
You can use Webpack Runtime Analyzer everywhere when having an access to a web-view (e.g. browser pages, browser plugins, mobile browsers and applications).
Some code editors have an access to a web view (e.g. iframe) and there is a great opportunity to integrate Webpack Runtime Analyzer in these editors and use unique editor features.
You can use Webpack Runtime Analyzer in Atom Editor by installed the plugin.
This plugin creates a bridge between the editor and Webpack Runtime Analyzer. It allows you to open the UI directly in an editor tab and observing current editing file.
Open UI in editor
Just type Rempl in command palette and enter rempl-server url (http://localhost:8177 by default).
Info about editing file
If the editing file is part of the bundle, then you can see some info about it in several places: - Environment page of the UI (contains all modules that retained by the editing file) - the status bar of the UI - the status bar of the Editor (two-way communication)

Environment page and status bar exist only when the UI is running within editor
How about other editors?
VS Code support is in plans...
- TypeScript
Published by smelukov almost 9 years ago
https://github.com/statoscope/statoscope - v1.1.0 - new dependency graph
Plugin
- fixed bug when calling loader-utils (fixes #9)
UI
Old d3-graph was replaced by vivagraph. It brings some new cool features:
- zooming graph with mouse/touchpad scrolling
- changing graph position with drag and drop on the white field.
- changing rendering speed by sliding speed slider
- pause/resume graph rendering with space-key
- graph statistic
- TypeScript
Published by smelukov almost 9 years ago
https://github.com/statoscope/statoscope - v1.0.1
Plugin
- bumped rempl version
- added
onlyWatchModeoption (#8)
onlyWatchMode option activates plugin only in a watch mode (> webpack --watch or > webpack-dev-server)
If onlyWatchMode is false then the plugin will be activated in a normal (> webpack) and in a watch mode (> webpack --watch or > webpack-dev-server). It means that normal building process will not be terminated after finish because the plugin is holding a permanent connection to the rempl server. The only way to terminate building process is ctrl+c like in a watch mode.
true by default.
- TypeScript
Published by smelukov almost 9 years ago
https://github.com/statoscope/statoscope - v1.0.0
🎉 First stable release!
Plugin
Plugin now works only in watch-mode and has more webpack 1.x capability
UI
- added
Hide 3rd party modulesbutton that hides modules that don't requires your project-modules (#5) - added some css prefixes for cross-browsing
- improved markup for long text in tooltip
- highlighted different module types in graph
- added module type to the tooltip
- reworked path-building algorithm in file map
- TypeScript
Published by smelukov almost 9 years ago
https://github.com/statoscope/statoscope - v1.0.0-alpha5
- add webpack2 support! 🎉
- fix webpack version info
- some cleanup in code
- TypeScript
Published by smelukov about 9 years ago
https://github.com/statoscope/statoscope - v1.0.0-alpha4
- layout rework
- bump rempl version
- fix loaders normalization bug
- TypeScript
Published by smelukov about 9 years ago