The Build Tracker Comparator contains the core functionality for calculating how two or more Builds differ. This package is only needed individually if you would like to do some custom reporting on various Builds.
Install# Copy yarn add @build-tracker/comparator@latest
# or
npm install --save @build-tracker/comparator@latest
class BuildComparator
# The following is a list of useful public methods for the BuildComparator
class. More may be available.
constructor (ComparatorOptions)
# Construct a new BuildComparator
instance.
Example# Copy import Build from '@build-tracker/build' ;
import BuildComparator from '@build-tracker/comparator' ;
new BuildComparator ( {
builds : [
new Build ( build1Meta , build1Artifacts ) ,
new Build ( build2Meta , build2Artifacts ) ,
] ,
} ) ;
toJSON(): ComparisonMatrix
# Get a full JSON representation of a comparison matrix. This is typically used for constructing large user-interface tables, such as the one provided in the Build Tracker web app UI.
toMarkdown(FormattingOptions): string
# Get a Markdown table represetnation of the comparison matrix. Post these, along with a summary , as pull request comments.
Default Example# Copy | | 1234567 | 8901234 | Δ1 |
| :------- | -------: | -------: | -------------------: |
| All | 0.13 KiB | 0.16 KiB | 0.03 KiB (20.7%) |
| churros | 0 KiB | 0.12 KiB | ⚠️ 0.12 KiB (100.0%) |
| burritos | 0.09 KiB | 0 KiB | -0.09 KiB (-100.0%) |
| tacos | 0.04 KiB | 0.04 KiB | 🚨 0 KiB (-4.4%) |
toCsv(FormattingOptions): string
# For old-school spreadsheet storage, export your comparison table as a CSV and import it into your favorite spreadsheet editor.
Default Example# Copy ,1234567,8901234,Δ1
All,0.13 KiB,0.16 KiB,0.03 KiB (20.7%)
churros,0 KiB,0.12 KiB,0.12 KiB (100.0%)
burritos,0.09 KiB,0 KiB,-0.09 KiB (-100.0%)
tacos,0.04 KiB,0.04 KiB,0 KiB (-4.4%)
toSummary(useEmoji: boolean = true): Array<string>
# Returns an array Markdown-formatted summaries of the overall comparison and any budgets that you have defined.
No failures:# Copy [ '✅ No failing budgets' ] ;
Warnings and Errors:# Copy [
'⚠️: `Group \\"All\\"` failed the gzip budget size limit of 0 KiB by 0.16 KiB' ,
'⚠️: `Group \\"warning\\"` failed the gzip budget size limit of 0 KiB by 0.12 KiB' ,
'🚨: `Group \\"error\\"` failed the gzip budget size limit of 0 KiB by 0.16 KiB' ,
'#️⃣: `burritos` hash changed without any file size change' ,
] ;
If useEmoji
is set to false
, emoji will be replaced with words:
Emoji Word ✅ (U+2705) Success ⚠️ (U+26A0) Warning 🚨 (U+1F6A9) Error #️⃣ (U+0023-20E3) Hash
Types# NOTE: Cell types have been omitted. Please refer to the source code to get the full type definitions.
ComparisonMatrix
# Copy interface ComparisonMatrix {
header : HeaderRow ;
groups : Array < GroupRow > ;
artifacts : Array < ArtifactRow > ;
}
ComparatorOptions
# Copy interface ComparatorOptions {
artifactBudgets ? : ArtifactBudgets ;
artifactFilters ? : Array < RegExp > ;
budgets ? : Array < Budget > ;
builds : Array < Build > ;
groups ? : Array < Group > ;
}
FormattingOptions
# Copy interface FormattingOptions {
formatCellText ? : CellTextStringFormatter ;
formatRevision ? : RevisionStringFormatter ;
formatRevisionDelta ? : RevisionDeltaStringFormatter ;
formatTotal ? : TotalStringFormatter ;
formatDelta ? : DeltaStringFormatter ;
artifactFilter ? : ArtifactFilter ;
sizeKey ? : string ;
}
Formatters# Copy type CellTextStringFormatter = ( cell : TextCell | GroupCell | ArtifactCell ) => string ;
type RevisionStringFormatter = ( cell : RevisionCell ) => string ;
type RevisionDeltaStringFormatter = ( cell : RevisionDeltaCell ) => string ;
type TotalStringFormatter = ( cell : TotalCell , sizeKey : string ) => string ;
type DeltaStringFormatter = ( cell : DeltaCell | TotalDeltaCell , sizeKey : string ) => string ;
type ArtifactFilter = ( row : ArtifactRow ) => boolean ;