webpack-dashboard/utils/format-duplicates.js
Ryan Roemer 77039dc78f
Chore: Update devDependencies. (#317)
Updates all `devDependencies` except for webpack which we're going to tackle in #316
2021-01-20 14:03:12 -08:00

36 lines
1.0 KiB
JavaScript

"use strict";
/**
* Problem: Duplicate files (same path name) in a bundle.
*/
const filesize = require("filesize");
const Handlebars = require("handlebars");
Handlebars.registerHelper("filesize", function (options) {
// eslint-disable-next-line no-invalid-this
return filesize(options.fn(this));
});
/* eslint-disable max-len*/
const template = Handlebars.compile(
`{yellow-fg}{underline}Duplicate files{/}
{{#each files}}
- {green-fg}{{@key}}{/}
(files: {{meta.extraFiles.num}}, sources: {{meta.extraSources.num}}, bytes: {{#filesize}}{{meta.extraSources.bytes}}{{/filesize}})
{{/each}}
Extra duplicate files (unique): {{meta.extraFiles.num}}
Extra duplicate sources (non-unique): {{meta.extraSources.num}}
Wasted duplicate bytes (non-unique): {{#filesize}}{{meta.extraSources.bytes}}{{/filesize}}
`
);
/* eslint-enable max-len*/
function formatDuplicates(duplicates) {
const haveDups = !!Object.keys((duplicates || {}).files || {}).length;
return haveDups ? template(duplicates) : "";
}
module.exports = formatDuplicates;