diff --git a/cli.js b/cli.js index 7cede0c..643b037 100755 --- a/cli.js +++ b/cli.js @@ -1,9 +1,11 @@ #!/usr/bin/env node /* @flow */ +const path = require("path"); const meow = require("meow"); const chalk = require("chalk"); const createProgressBar = require("./lib/console/progress-bar"); +const defaultReporter = require("./lib/reporter"); const defaultCommand = require("./commands/default"); const byCommand = require("./commands/by"); const helpCommand = require("./commands/help"); @@ -18,7 +20,8 @@ const knownFlags = [ "limit", "version", "help", - "ignore" + "ignore", + "reporter" ]; const validateFlags = flags => { @@ -56,10 +59,21 @@ if (!input || !input.length || !input[0].match(".json") || flags.help) { const updateProgressBar = createProgressBar(); +let reporter = defaultReporter; +if (flags.reporter) { + try { + reporter = { + ...defaultReporter, + // $FlowFixMe + ...require(path.resolve(__dirname, flags.reporter)) + }; + } catch (e) {} +} + if (flags.by) { - byCommand(input[0], flags, input[1], updateProgressBar); + byCommand(input[0], flags, input[1], reporter, updateProgressBar); } else { - defaultCommand(input[0], flags, input[1], updateProgressBar); + defaultCommand(input[0], flags, input[1], reporter, updateProgressBar); } const timing = (Date.now() - start) / 1000; diff --git a/commands/by.js b/commands/by.js index cc4747e..3f48929 100644 --- a/commands/by.js +++ b/commands/by.js @@ -3,9 +3,10 @@ /*:: import type { UpdateProgressBar } from '../lib/console/progress-bar'; import type { Reason, Module } from '../lib/analyze'; +import type { Reporter } from '../lib/reporter'; */ -const { analyze, print, getStats } = require("../lib"); +const { analyze, getStats } = require("../lib"); const validate = require("../lib/validate"); const { log, invalidStatsJson } = require("../lib/console/messages"); @@ -40,6 +41,7 @@ module.exports = function byCommand( statsFilePath /*: string */, flags /*: { limit: number, by: string, only?: boolean, ignore?: string } */, pattern /*: string */, + reporter /*: Reporter */, updateProgressBar /*: UpdateProgressBar */ = () => {} ) { const stats = getStats(statsFilePath); @@ -57,5 +59,5 @@ module.exports = function byCommand( : modulesFollowingDepsChain(report.modules, flags.by); const limit /*: number */ = pattern ? 0 : flags.limit >= 0 ? flags.limit : 20; - print(modules, report.chunks, { by: flags.by }, limit); + reporter.print(modules, report.chunks, { by: flags.by }, limit); }; diff --git a/commands/default.js b/commands/default.js index e222bdf..ee89111 100644 --- a/commands/default.js +++ b/commands/default.js @@ -1,12 +1,13 @@ /* @flow */ const mm = require("micromatch"); -const { analyze, print, getStats } = require("../lib"); +const { analyze, getStats } = require("../lib"); const validate = require("../lib/validate"); const { log, invalidStatsJson } = require("../lib/console/messages"); /*:: import type { UpdateProgressBar } from '../lib/console/progress-bar'; +import type { Reporter } from '../lib/reporter'; type Flags = { limit: number, @@ -24,6 +25,7 @@ module.exports = function defaultCommand( statsFilePath /*: string */, flags /*: Flags */, pattern /*: string*/, + reporter /*: Reporter */, updateProgressBar /*: UpdateProgressBar */ = () => {} ) { const stats = getStats(statsFilePath); @@ -54,5 +56,5 @@ module.exports = function defaultCommand( }); const limit = pattern ? 0 : flags.limit >= 0 ? flags.limit : 20; - print(modules, report.chunks, flags, limit); + reporter.print(modules, report.chunks, flags, limit); }; diff --git a/lib/console/__tests__/__snapshots__/progress-bar.js.md b/lib/console/__tests__/__snapshots__/progress-bar.js.md index 0198351..46b29dd 100644 --- a/lib/console/__tests__/__snapshots__/progress-bar.js.md +++ b/lib/console/__tests__/__snapshots__/progress-bar.js.md @@ -10,7 +10,7 @@ Generated by [AVA](https://ava.li). [ `␍ - `, + `, `␍ `, '⸨░░░░░░░░░░░░░░░░░░░░⸩ 0% • info ', @@ -22,14 +22,14 @@ Generated by [AVA](https://ava.li). [ `␍ - `, + `, `␍ `, '⸨ ⸩ 100% • info ', `␍ `, `␍ - `, + `, ] ## should output correct progress for {"progress":30,"title":"title","text":"text"} @@ -38,7 +38,7 @@ Generated by [AVA](https://ava.li). [ `␍ - `, + `, `␍ `, '⸨ ░░░░░░░░░░░░░░⸩ 30% • info title: text', @@ -50,7 +50,7 @@ Generated by [AVA](https://ava.li). [ `␍ - `, + `, `␍ `, '⸨ ░░░░░░░░░░⸩ 50% • info text', @@ -62,7 +62,7 @@ Generated by [AVA](https://ava.li). [ `␍ - `, + `, `␍ `, '⸨ ░░░░░⸩ 75% • info title: ', diff --git a/lib/console/__tests__/__snapshots__/progress-bar.js.snap b/lib/console/__tests__/__snapshots__/progress-bar.js.snap index 135c9d2..4a93bc0 100644 Binary files a/lib/console/__tests__/__snapshots__/progress-bar.js.snap and b/lib/console/__tests__/__snapshots__/progress-bar.js.snap differ diff --git a/lib/console/progress-bar.js b/lib/console/progress-bar.js index 3f6f677..b82b3df 100644 --- a/lib/console/progress-bar.js +++ b/lib/console/progress-bar.js @@ -12,7 +12,7 @@ function toStartOfLine(stdout /*: stream$Writable */) { function clearLine(stdout /*: stream$Writable */) { // $FlowFixMe: investigate process.stderr.columns flow error - stdout.write(`\r${" ".repeat(stdout.columns - 1)}`); + stdout.write(`\r${" ".repeat(stdout.columns)}`); } function selectPrevLine(stdout /*: stream$Writable */) { diff --git a/lib/index.js b/lib/index.js index a0ce257..664d6f0 100644 --- a/lib/index.js +++ b/lib/index.js @@ -1,7 +1,7 @@ /* @flow */ const analyze = require("./analyze"); -const print = require("./print"); +const reporter = require("./reporter"); const getStats = require("./get-stats"); -module.exports = { analyze, print, getStats }; +module.exports = { analyze, reporter, getStats }; diff --git a/lib/reporter/__tests__/__snapshots__/print.js.md b/lib/reporter/__tests__/__snapshots__/print.js.md new file mode 100644 index 0000000..196850e --- /dev/null +++ b/lib/reporter/__tests__/__snapshots__/print.js.md @@ -0,0 +1,1598 @@ +# Snapshot report for `lib/reporter/__tests__/print.js` + +The actual snapshot is saved in `print.js.snap`. + +Generated by [AVA](https://ava.li). + +## should properly print multi entry stats.json + +> Snapshot 1 + + [ + '', + ` MODULE lodash␊ + ├─ imported: 2 times␊ + ├─ deps count: 0␊ + ├─ size: 527 KiB [for all included files]␊ + ├─ type: [direct]␊ + ├─ chunks: main␊ + ├─ locations: ␊ + │ └─ ./node_modules/lodash/␊ + │ ␊ + ├─ files: ␊ + │ └─ ./node_modules/lodash/lodash.js␊ + │ ␊ + └─ reasons:␊ + ├─ ./index.js 1:0-28 [harmony side effect evaluation]␊ + └─ ./index.js 3:12-18 [harmony import specifier]␊ + `, + '––––––––––––––––––––', + '', + '', + ` MODULE ramda␊ + ├─ imported: 2 times␊ + ├─ deps count: 0␊ + ├─ size: 309 KiB [for all included files]␊ + ├─ type: [direct]␊ + ├─ chunks: secondary␊ + ├─ locations: ␊ + │ └─ ./node_modules/ramda/␊ + │ ␊ + ├─ files: ␊ + │ ├─ ./node_modules/ramda/es/F.js␊ + │ ├─ ./node_modules/ramda/es/T.js␊ + │ ├─ ./node_modules/ramda/es/__.js␊ + │ ├─ ./node_modules/ramda/es/add.js␊ + │ ├─ ./node_modules/ramda/es/addIndex.js␊ + │ ├─ ./node_modules/ramda/es/adjust.js␊ + │ ├─ ./node_modules/ramda/es/all.js␊ + │ ├─ ./node_modules/ramda/es/allPass.js␊ + │ ├─ ./node_modules/ramda/es/always.js␊ + │ ├─ ./node_modules/ramda/es/and.js␊ + │ ├─ ./node_modules/ramda/es/any.js␊ + │ ├─ ./node_modules/ramda/es/anyPass.js␊ + │ ├─ ./node_modules/ramda/es/ap.js␊ + │ ├─ ./node_modules/ramda/es/aperture.js␊ + │ ├─ ./node_modules/ramda/es/append.js␊ + │ ├─ ./node_modules/ramda/es/apply.js␊ + │ ├─ ./node_modules/ramda/es/applySpec.js␊ + │ ├─ ./node_modules/ramda/es/applyTo.js␊ + │ ├─ ./node_modules/ramda/es/ascend.js␊ + │ ├─ ./node_modules/ramda/es/assoc.js␊ + │ ├─ ./node_modules/ramda/es/assocPath.js␊ + │ ├─ ./node_modules/ramda/es/binary.js␊ + │ ├─ ./node_modules/ramda/es/bind.js␊ + │ ├─ ./node_modules/ramda/es/both.js␊ + │ ├─ ./node_modules/ramda/es/call.js␊ + │ ├─ ./node_modules/ramda/es/chain.js␊ + │ ├─ ./node_modules/ramda/es/clamp.js␊ + │ ├─ ./node_modules/ramda/es/clone.js␊ + │ ├─ ./node_modules/ramda/es/comparator.js␊ + │ ├─ ./node_modules/ramda/es/complement.js␊ + │ ├─ ./node_modules/ramda/es/compose.js␊ + │ ├─ ./node_modules/ramda/es/composeK.js␊ + │ ├─ ./node_modules/ramda/es/composeP.js␊ + │ ├─ ./node_modules/ramda/es/concat.js␊ + │ ├─ ./node_modules/ramda/es/cond.js␊ + │ ├─ ./node_modules/ramda/es/construct.js␊ + │ ├─ ./node_modules/ramda/es/constructN.js␊ + │ ├─ ./node_modules/ramda/es/contains.js␊ + │ ├─ ./node_modules/ramda/es/converge.js␊ + │ ├─ ./node_modules/ramda/es/countBy.js␊ + │ ├─ ./node_modules/ramda/es/curry.js␊ + │ ├─ ./node_modules/ramda/es/curryN.js␊ + │ ├─ ./node_modules/ramda/es/dec.js␊ + │ ├─ ./node_modules/ramda/es/defaultTo.js␊ + │ ├─ ./node_modules/ramda/es/descend.js␊ + │ ├─ ./node_modules/ramda/es/difference.js␊ + │ ├─ ./node_modules/ramda/es/differenceWith.js␊ + │ ├─ ./node_modules/ramda/es/dissoc.js␊ + │ ├─ ./node_modules/ramda/es/dissocPath.js␊ + │ ├─ ./node_modules/ramda/es/divide.js␊ + │ ├─ ./node_modules/ramda/es/drop.js␊ + │ ├─ ./node_modules/ramda/es/dropLast.js␊ + │ ├─ ./node_modules/ramda/es/dropLastWhile.js␊ + │ ├─ ./node_modules/ramda/es/dropRepeats.js␊ + │ ├─ ./node_modules/ramda/es/dropRepeatsWith.js␊ + │ ├─ ./node_modules/ramda/es/dropWhile.js␊ + │ ├─ ./node_modules/ramda/es/either.js␊ + │ ├─ ./node_modules/ramda/es/empty.js␊ + │ ├─ ./node_modules/ramda/es/endsWith.js␊ + │ ├─ ./node_modules/ramda/es/eqBy.js␊ + │ ├─ ./node_modules/ramda/es/eqProps.js␊ + │ ├─ ./node_modules/ramda/es/equals.js␊ + │ ├─ ./node_modules/ramda/es/evolve.js␊ + │ ├─ ./node_modules/ramda/es/filter.js␊ + │ ├─ ./node_modules/ramda/es/find.js␊ + │ ├─ ./node_modules/ramda/es/findIndex.js␊ + │ ├─ ./node_modules/ramda/es/findLast.js␊ + │ ├─ ./node_modules/ramda/es/findLastIndex.js␊ + │ ├─ ./node_modules/ramda/es/flatten.js␊ + │ ├─ ./node_modules/ramda/es/flip.js␊ + │ ├─ ./node_modules/ramda/es/forEach.js␊ + │ ├─ ./node_modules/ramda/es/forEachObjIndexed.js␊ + │ ├─ ./node_modules/ramda/es/fromPairs.js␊ + │ ├─ ./node_modules/ramda/es/groupBy.js␊ + │ ├─ ./node_modules/ramda/es/groupWith.js␊ + │ ├─ ./node_modules/ramda/es/gt.js␊ + │ ├─ ./node_modules/ramda/es/gte.js␊ + │ ├─ ./node_modules/ramda/es/has.js␊ + │ ├─ ./node_modules/ramda/es/hasIn.js␊ + │ ├─ ./node_modules/ramda/es/head.js␊ + │ ├─ ./node_modules/ramda/es/identical.js␊ + │ ├─ ./node_modules/ramda/es/identity.js␊ + │ ├─ ./node_modules/ramda/es/ifElse.js␊ + │ ├─ ./node_modules/ramda/es/inc.js␊ + │ ├─ ./node_modules/ramda/es/index.js␊ + │ ├─ ./node_modules/ramda/es/indexBy.js␊ + │ ├─ ./node_modules/ramda/es/indexOf.js␊ + │ ├─ ./node_modules/ramda/es/init.js␊ + │ ├─ ./node_modules/ramda/es/innerJoin.js␊ + │ ├─ ./node_modules/ramda/es/insert.js␊ + │ ├─ ./node_modules/ramda/es/insertAll.js␊ + │ ├─ ./node_modules/ramda/es/internal/_Set.js␊ + │ ├─ ./node_modules/ramda/es/internal/_aperture.js␊ + │ ├─ ./node_modules/ramda/es/internal/_arity.js␊ + │ ├─ ./node_modules/ramda/es/internal/_arrayFromIterator.js␊ + │ ├─ ./node_modules/ramda/es/internal/_assign.js␊ + │ ├─ ./node_modules/ramda/es/internal/_checkForMethod.js␊ + │ ├─ ./node_modules/ramda/es/internal/_clone.js␊ + │ ├─ ./node_modules/ramda/es/internal/_cloneRegExp.js␊ + │ ├─ ./node_modules/ramda/es/internal/_complement.js␊ + │ ├─ ./node_modules/ramda/es/internal/_concat.js␊ + │ ├─ ./node_modules/ramda/es/internal/_contains.js␊ + │ ├─ ./node_modules/ramda/es/internal/_containsWith.js␊ + │ ├─ ./node_modules/ramda/es/internal/_createPartialApplicator.js␊ + │ ├─ ./node_modules/ramda/es/internal/_curry1.js␊ + │ ├─ ./node_modules/ramda/es/internal/_curry2.js␊ + │ ├─ ./node_modules/ramda/es/internal/_curry3.js␊ + │ ├─ ./node_modules/ramda/es/internal/_curryN.js␊ + │ ├─ ./node_modules/ramda/es/internal/_dispatchable.js␊ + │ ├─ ./node_modules/ramda/es/internal/_dropLast.js␊ + │ ├─ ./node_modules/ramda/es/internal/_dropLastWhile.js␊ + │ ├─ ./node_modules/ramda/es/internal/_equals.js␊ + │ ├─ ./node_modules/ramda/es/internal/_filter.js␊ + │ ├─ ./node_modules/ramda/es/internal/_flatCat.js␊ + │ ├─ ./node_modules/ramda/es/internal/_forceReduced.js␊ + │ ├─ ./node_modules/ramda/es/internal/_functionName.js␊ + │ ├─ ./node_modules/ramda/es/internal/_has.js␊ + │ ├─ ./node_modules/ramda/es/internal/_identity.js␊ + │ ├─ ./node_modules/ramda/es/internal/_indexOf.js␊ + │ ├─ ./node_modules/ramda/es/internal/_isArguments.js␊ + │ ├─ ./node_modules/ramda/es/internal/_isArray.js␊ + │ ├─ ./node_modules/ramda/es/internal/_isArrayLike.js␊ + │ ├─ ./node_modules/ramda/es/internal/_isFunction.js␊ + │ ├─ ./node_modules/ramda/es/internal/_isInteger.js␊ + │ ├─ ./node_modules/ramda/es/internal/_isNumber.js␊ + │ ├─ ./node_modules/ramda/es/internal/_isObject.js␊ + │ ├─ ./node_modules/ramda/es/internal/_isPlaceholder.js␊ + │ ├─ ./node_modules/ramda/es/internal/_isRegExp.js␊ + │ ├─ ./node_modules/ramda/es/internal/_isString.js␊ + │ ├─ ./node_modules/ramda/es/internal/_isTransformer.js␊ + │ ├─ ./node_modules/ramda/es/internal/_makeFlat.js␊ + │ ├─ ./node_modules/ramda/es/internal/_map.js␊ + │ ├─ ./node_modules/ramda/es/internal/_objectAssign.js␊ + │ ├─ ./node_modules/ramda/es/internal/_of.js␊ + │ ├─ ./node_modules/ramda/es/internal/_pipe.js␊ + │ ├─ ./node_modules/ramda/es/internal/_pipeP.js␊ + │ ├─ ./node_modules/ramda/es/internal/_quote.js␊ + │ ├─ ./node_modules/ramda/es/internal/_reduce.js␊ + │ ├─ ./node_modules/ramda/es/internal/_reduced.js␊ + │ ├─ ./node_modules/ramda/es/internal/_stepCat.js␊ + │ ├─ ./node_modules/ramda/es/internal/_toISOString.js␊ + │ ├─ ./node_modules/ramda/es/internal/_toString.js␊ + │ ├─ ./node_modules/ramda/es/internal/_xall.js␊ + │ ├─ ./node_modules/ramda/es/internal/_xany.js␊ + │ ├─ ./node_modules/ramda/es/internal/_xaperture.js␊ + │ ├─ ./node_modules/ramda/es/internal/_xchain.js␊ + │ ├─ ./node_modules/ramda/es/internal/_xdrop.js␊ + │ ├─ ./node_modules/ramda/es/internal/_xdropLast.js␊ + │ ├─ ./node_modules/ramda/es/internal/_xdropLastWhile.js␊ + │ ├─ ./node_modules/ramda/es/internal/_xdropRepeatsWith.js␊ + │ ├─ ./node_modules/ramda/es/internal/_xdropWhile.js␊ + │ ├─ ./node_modules/ramda/es/internal/_xfBase.js␊ + │ ├─ ./node_modules/ramda/es/internal/_xfilter.js␊ + │ ├─ ./node_modules/ramda/es/internal/_xfind.js␊ + │ ├─ ./node_modules/ramda/es/internal/_xfindIndex.js␊ + │ ├─ ./node_modules/ramda/es/internal/_xfindLast.js␊ + │ ├─ ./node_modules/ramda/es/internal/_xfindLastIndex.js␊ + │ ├─ ./node_modules/ramda/es/internal/_xmap.js␊ + │ ├─ ./node_modules/ramda/es/internal/_xreduceBy.js␊ + │ ├─ ./node_modules/ramda/es/internal/_xtake.js␊ + │ ├─ ./node_modules/ramda/es/internal/_xtakeWhile.js␊ + │ ├─ ./node_modules/ramda/es/internal/_xtap.js␊ + │ ├─ ./node_modules/ramda/es/internal/_xwrap.js␊ + │ ├─ ./node_modules/ramda/es/intersection.js␊ + │ ├─ ./node_modules/ramda/es/intersperse.js␊ + │ ├─ ./node_modules/ramda/es/into.js␊ + │ ├─ ./node_modules/ramda/es/invert.js␊ + │ ├─ ./node_modules/ramda/es/invertObj.js␊ + │ ├─ ./node_modules/ramda/es/invoker.js␊ + │ ├─ ./node_modules/ramda/es/is.js␊ + │ ├─ ./node_modules/ramda/es/isEmpty.js␊ + │ ├─ ./node_modules/ramda/es/isNil.js␊ + │ ├─ ./node_modules/ramda/es/join.js␊ + │ ├─ ./node_modules/ramda/es/juxt.js␊ + │ ├─ ./node_modules/ramda/es/keys.js␊ + │ ├─ ./node_modules/ramda/es/keysIn.js␊ + │ ├─ ./node_modules/ramda/es/last.js␊ + │ ├─ ./node_modules/ramda/es/lastIndexOf.js␊ + │ ├─ ./node_modules/ramda/es/length.js␊ + │ ├─ ./node_modules/ramda/es/lens.js␊ + │ ├─ ./node_modules/ramda/es/lensIndex.js␊ + │ ├─ ./node_modules/ramda/es/lensPath.js␊ + │ ├─ ./node_modules/ramda/es/lensProp.js␊ + │ ├─ ./node_modules/ramda/es/lift.js␊ + │ ├─ ./node_modules/ramda/es/liftN.js␊ + │ ├─ ./node_modules/ramda/es/lt.js␊ + │ ├─ ./node_modules/ramda/es/lte.js␊ + │ ├─ ./node_modules/ramda/es/map.js␊ + │ ├─ ./node_modules/ramda/es/mapAccum.js␊ + │ ├─ ./node_modules/ramda/es/mapAccumRight.js␊ + │ ├─ ./node_modules/ramda/es/mapObjIndexed.js␊ + │ ├─ ./node_modules/ramda/es/match.js␊ + │ ├─ ./node_modules/ramda/es/mathMod.js␊ + │ ├─ ./node_modules/ramda/es/max.js␊ + │ ├─ ./node_modules/ramda/es/maxBy.js␊ + │ ├─ ./node_modules/ramda/es/mean.js␊ + │ ├─ ./node_modules/ramda/es/median.js␊ + │ ├─ ./node_modules/ramda/es/memoize.js␊ + │ ├─ ./node_modules/ramda/es/memoizeWith.js␊ + │ ├─ ./node_modules/ramda/es/merge.js␊ + │ ├─ ./node_modules/ramda/es/mergeAll.js␊ + │ ├─ ./node_modules/ramda/es/mergeDeepLeft.js␊ + │ ├─ ./node_modules/ramda/es/mergeDeepRight.js␊ + │ ├─ ./node_modules/ramda/es/mergeDeepWith.js␊ + │ ├─ ./node_modules/ramda/es/mergeDeepWithKey.js␊ + │ ├─ ./node_modules/ramda/es/mergeWith.js␊ + │ ├─ ./node_modules/ramda/es/mergeWithKey.js␊ + │ ├─ ./node_modules/ramda/es/min.js␊ + │ ├─ ./node_modules/ramda/es/minBy.js␊ + │ ├─ ./node_modules/ramda/es/modulo.js␊ + │ ├─ ./node_modules/ramda/es/multiply.js␊ + │ ├─ ./node_modules/ramda/es/nAry.js␊ + │ ├─ ./node_modules/ramda/es/negate.js␊ + │ ├─ ./node_modules/ramda/es/none.js␊ + │ ├─ ./node_modules/ramda/es/not.js␊ + │ ├─ ./node_modules/ramda/es/nth.js␊ + │ ├─ ./node_modules/ramda/es/nthArg.js␊ + │ ├─ ./node_modules/ramda/es/o.js␊ + │ ├─ ./node_modules/ramda/es/objOf.js␊ + │ ├─ ./node_modules/ramda/es/of.js␊ + │ ├─ ./node_modules/ramda/es/omit.js␊ + │ ├─ ./node_modules/ramda/es/once.js␊ + │ ├─ ./node_modules/ramda/es/or.js␊ + │ ├─ ./node_modules/ramda/es/over.js␊ + │ ├─ ./node_modules/ramda/es/pair.js␊ + │ ├─ ./node_modules/ramda/es/partial.js␊ + │ ├─ ./node_modules/ramda/es/partialRight.js␊ + │ ├─ ./node_modules/ramda/es/partition.js␊ + │ ├─ ./node_modules/ramda/es/path.js␊ + │ ├─ ./node_modules/ramda/es/pathEq.js␊ + │ ├─ ./node_modules/ramda/es/pathOr.js␊ + │ ├─ ./node_modules/ramda/es/pathSatisfies.js␊ + │ ├─ ./node_modules/ramda/es/pick.js␊ + │ ├─ ./node_modules/ramda/es/pickAll.js␊ + │ ├─ ./node_modules/ramda/es/pickBy.js␊ + │ ├─ ./node_modules/ramda/es/pipe.js␊ + │ ├─ ./node_modules/ramda/es/pipeK.js␊ + │ ├─ ./node_modules/ramda/es/pipeP.js␊ + │ ├─ ./node_modules/ramda/es/pluck.js␊ + │ ├─ ./node_modules/ramda/es/prepend.js␊ + │ ├─ ./node_modules/ramda/es/product.js␊ + │ ├─ ./node_modules/ramda/es/project.js␊ + │ ├─ ./node_modules/ramda/es/prop.js␊ + │ ├─ ./node_modules/ramda/es/propEq.js␊ + │ ├─ ./node_modules/ramda/es/propIs.js␊ + │ ├─ ./node_modules/ramda/es/propOr.js␊ + │ ├─ ./node_modules/ramda/es/propSatisfies.js␊ + │ ├─ ./node_modules/ramda/es/props.js␊ + │ ├─ ./node_modules/ramda/es/range.js␊ + │ ├─ ./node_modules/ramda/es/reduce.js␊ + │ ├─ ./node_modules/ramda/es/reduceBy.js␊ + │ ├─ ./node_modules/ramda/es/reduceRight.js␊ + │ ├─ ./node_modules/ramda/es/reduceWhile.js␊ + │ ├─ ./node_modules/ramda/es/reduced.js␊ + │ ├─ ./node_modules/ramda/es/reject.js␊ + │ ├─ ./node_modules/ramda/es/remove.js␊ + │ ├─ ./node_modules/ramda/es/repeat.js␊ + │ ├─ ./node_modules/ramda/es/replace.js␊ + │ ├─ ./node_modules/ramda/es/reverse.js␊ + │ ├─ ./node_modules/ramda/es/scan.js␊ + │ ├─ ./node_modules/ramda/es/sequence.js␊ + │ ├─ ./node_modules/ramda/es/set.js␊ + │ ├─ ./node_modules/ramda/es/slice.js␊ + │ ├─ ./node_modules/ramda/es/sort.js␊ + │ ├─ ./node_modules/ramda/es/sortBy.js␊ + │ ├─ ./node_modules/ramda/es/sortWith.js␊ + │ ├─ ./node_modules/ramda/es/split.js␊ + │ ├─ ./node_modules/ramda/es/splitAt.js␊ + │ ├─ ./node_modules/ramda/es/splitEvery.js␊ + │ ├─ ./node_modules/ramda/es/splitWhen.js␊ + │ ├─ ./node_modules/ramda/es/startsWith.js␊ + │ ├─ ./node_modules/ramda/es/subtract.js␊ + │ ├─ ./node_modules/ramda/es/sum.js␊ + │ ├─ ./node_modules/ramda/es/symmetricDifference.js␊ + │ ├─ ./node_modules/ramda/es/symmetricDifferenceWith.js␊ + │ ├─ ./node_modules/ramda/es/tail.js␊ + │ ├─ ./node_modules/ramda/es/take.js␊ + │ ├─ ./node_modules/ramda/es/takeLast.js␊ + │ ├─ ./node_modules/ramda/es/takeLastWhile.js␊ + │ ├─ ./node_modules/ramda/es/takeWhile.js␊ + │ ├─ ./node_modules/ramda/es/tap.js␊ + │ ├─ ./node_modules/ramda/es/test.js␊ + │ ├─ ./node_modules/ramda/es/times.js␊ + │ ├─ ./node_modules/ramda/es/toLower.js␊ + │ ├─ ./node_modules/ramda/es/toPairs.js␊ + │ ├─ ./node_modules/ramda/es/toPairsIn.js␊ + │ ├─ ./node_modules/ramda/es/toString.js␊ + │ ├─ ./node_modules/ramda/es/toUpper.js␊ + │ ├─ ./node_modules/ramda/es/transduce.js␊ + │ ├─ ./node_modules/ramda/es/transpose.js␊ + │ ├─ ./node_modules/ramda/es/traverse.js␊ + │ ├─ ./node_modules/ramda/es/trim.js␊ + │ ├─ ./node_modules/ramda/es/tryCatch.js␊ + │ ├─ ./node_modules/ramda/es/type.js␊ + │ ├─ ./node_modules/ramda/es/unapply.js␊ + │ ├─ ./node_modules/ramda/es/unary.js␊ + │ ├─ ./node_modules/ramda/es/uncurryN.js␊ + │ ├─ ./node_modules/ramda/es/unfold.js␊ + │ ├─ ./node_modules/ramda/es/union.js␊ + │ ├─ ./node_modules/ramda/es/unionWith.js␊ + │ ├─ ./node_modules/ramda/es/uniq.js␊ + │ ├─ ./node_modules/ramda/es/uniqBy.js␊ + │ ├─ ./node_modules/ramda/es/uniqWith.js␊ + │ ├─ ./node_modules/ramda/es/unless.js␊ + │ ├─ ./node_modules/ramda/es/unnest.js␊ + │ ├─ ./node_modules/ramda/es/until.js␊ + │ ├─ ./node_modules/ramda/es/update.js␊ + │ ├─ ./node_modules/ramda/es/useWith.js␊ + │ ├─ ./node_modules/ramda/es/values.js␊ + │ ├─ ./node_modules/ramda/es/valuesIn.js␊ + │ ├─ ./node_modules/ramda/es/view.js␊ + │ ├─ ./node_modules/ramda/es/when.js␊ + │ ├─ ./node_modules/ramda/es/where.js␊ + │ ├─ ./node_modules/ramda/es/whereEq.js␊ + │ ├─ ./node_modules/ramda/es/without.js␊ + │ ├─ ./node_modules/ramda/es/xprod.js␊ + │ ├─ ./node_modules/ramda/es/zip.js␊ + │ ├─ ./node_modules/ramda/es/zipObj.js␊ + │ └─ ./node_modules/ramda/es/zipWith.js␊ + │ ␊ + └─ reasons:␊ + ├─ ./index2.js 1:0-26 [harmony side effect evaluation]␊ + └─ ./index2.js 2:12-17 [harmony import specifier]␊ + `, + '––––––––––––––––––––', + '', + '', + ` FILE ./index.js [entry]␊ + ├─ imported: 1 time␊ + ├─ size: 1 KiB␊ + └─ chunks: main`, + '––––––––––––––––––––', + '', + '', + ` FILE (webpack)/buildin/global.js␊ + ├─ imported: 1 time␊ + ├─ size: 1 KiB␊ + ├─ chunks: main␊ + └─ reasons:␊ + └─ ./node_modules/lodash/lodash.js␊ + `, + '––––––––––––––––––––', + '', + '', + ` FILE (webpack)/buildin/module.js␊ + ├─ imported: 1 time␊ + ├─ size: 1 KiB␊ + ├─ chunks: main␊ + └─ reasons:␊ + └─ ./node_modules/lodash/lodash.js␊ + `, + '––––––––––––––––––––', + '', + '', + ` FILE ./index2.js [entry]␊ + ├─ imported: 1 time␊ + ├─ size: 1 KiB␊ + └─ chunks: secondary`, + '––––––––––––––––––––', + '', + '', + ] + +## should properly print multi entry stats.json with dynamic import + +> Snapshot 1 + + [ + '', + ` MODULE lodash␊ + ├─ imported: 2 times␊ + ├─ deps count: 0␊ + ├─ size: 527 KiB [for all included files]␊ + ├─ type: [direct]␊ + ├─ chunks: main␊ + ├─ locations: ␊ + │ └─ ./node_modules/lodash/␊ + │ ␊ + ├─ files: ␊ + │ └─ ./node_modules/lodash/lodash.js␊ + │ ␊ + └─ reasons:␊ + ├─ ./index.js 1:0-28 [harmony side effect evaluation]␊ + └─ ./index.js 3:12-18 [harmony import specifier]␊ + `, + '––––––––––––––––––––', + '', + '', + ` MODULE ramda␊ + ├─ imported: 1 time␊ + ├─ deps count: 0␊ + ├─ size: 309 KiB [for all included files]␊ + ├─ type: [direct]␊ + ├─ chunks: 0␊ + ├─ locations: ␊ + │ └─ ./node_modules/ramda/␊ + │ ␊ + ├─ files: ␊ + │ ├─ ./node_modules/ramda/es/F.js␊ + │ ├─ ./node_modules/ramda/es/T.js␊ + │ ├─ ./node_modules/ramda/es/__.js␊ + │ ├─ ./node_modules/ramda/es/add.js␊ + │ ├─ ./node_modules/ramda/es/addIndex.js␊ + │ ├─ ./node_modules/ramda/es/adjust.js␊ + │ ├─ ./node_modules/ramda/es/all.js␊ + │ ├─ ./node_modules/ramda/es/allPass.js␊ + │ ├─ ./node_modules/ramda/es/always.js␊ + │ ├─ ./node_modules/ramda/es/and.js␊ + │ ├─ ./node_modules/ramda/es/any.js␊ + │ ├─ ./node_modules/ramda/es/anyPass.js␊ + │ ├─ ./node_modules/ramda/es/ap.js␊ + │ ├─ ./node_modules/ramda/es/aperture.js␊ + │ ├─ ./node_modules/ramda/es/append.js␊ + │ ├─ ./node_modules/ramda/es/apply.js␊ + │ ├─ ./node_modules/ramda/es/applySpec.js␊ + │ ├─ ./node_modules/ramda/es/applyTo.js␊ + │ ├─ ./node_modules/ramda/es/ascend.js␊ + │ ├─ ./node_modules/ramda/es/assoc.js␊ + │ ├─ ./node_modules/ramda/es/assocPath.js␊ + │ ├─ ./node_modules/ramda/es/binary.js␊ + │ ├─ ./node_modules/ramda/es/bind.js␊ + │ ├─ ./node_modules/ramda/es/both.js␊ + │ ├─ ./node_modules/ramda/es/call.js␊ + │ ├─ ./node_modules/ramda/es/chain.js␊ + │ ├─ ./node_modules/ramda/es/clamp.js␊ + │ ├─ ./node_modules/ramda/es/clone.js␊ + │ ├─ ./node_modules/ramda/es/comparator.js␊ + │ ├─ ./node_modules/ramda/es/complement.js␊ + │ ├─ ./node_modules/ramda/es/compose.js␊ + │ ├─ ./node_modules/ramda/es/composeK.js␊ + │ ├─ ./node_modules/ramda/es/composeP.js␊ + │ ├─ ./node_modules/ramda/es/concat.js␊ + │ ├─ ./node_modules/ramda/es/cond.js␊ + │ ├─ ./node_modules/ramda/es/construct.js␊ + │ ├─ ./node_modules/ramda/es/constructN.js␊ + │ ├─ ./node_modules/ramda/es/contains.js␊ + │ ├─ ./node_modules/ramda/es/converge.js␊ + │ ├─ ./node_modules/ramda/es/countBy.js␊ + │ ├─ ./node_modules/ramda/es/curry.js␊ + │ ├─ ./node_modules/ramda/es/curryN.js␊ + │ ├─ ./node_modules/ramda/es/dec.js␊ + │ ├─ ./node_modules/ramda/es/defaultTo.js␊ + │ ├─ ./node_modules/ramda/es/descend.js␊ + │ ├─ ./node_modules/ramda/es/difference.js␊ + │ ├─ ./node_modules/ramda/es/differenceWith.js␊ + │ ├─ ./node_modules/ramda/es/dissoc.js␊ + │ ├─ ./node_modules/ramda/es/dissocPath.js␊ + │ ├─ ./node_modules/ramda/es/divide.js␊ + │ ├─ ./node_modules/ramda/es/drop.js␊ + │ ├─ ./node_modules/ramda/es/dropLast.js␊ + │ ├─ ./node_modules/ramda/es/dropLastWhile.js␊ + │ ├─ ./node_modules/ramda/es/dropRepeats.js␊ + │ ├─ ./node_modules/ramda/es/dropRepeatsWith.js␊ + │ ├─ ./node_modules/ramda/es/dropWhile.js␊ + │ ├─ ./node_modules/ramda/es/either.js␊ + │ ├─ ./node_modules/ramda/es/empty.js␊ + │ ├─ ./node_modules/ramda/es/endsWith.js␊ + │ ├─ ./node_modules/ramda/es/eqBy.js␊ + │ ├─ ./node_modules/ramda/es/eqProps.js␊ + │ ├─ ./node_modules/ramda/es/equals.js␊ + │ ├─ ./node_modules/ramda/es/evolve.js␊ + │ ├─ ./node_modules/ramda/es/filter.js␊ + │ ├─ ./node_modules/ramda/es/find.js␊ + │ ├─ ./node_modules/ramda/es/findIndex.js␊ + │ ├─ ./node_modules/ramda/es/findLast.js␊ + │ ├─ ./node_modules/ramda/es/findLastIndex.js␊ + │ ├─ ./node_modules/ramda/es/flatten.js␊ + │ ├─ ./node_modules/ramda/es/flip.js␊ + │ ├─ ./node_modules/ramda/es/forEach.js␊ + │ ├─ ./node_modules/ramda/es/forEachObjIndexed.js␊ + │ ├─ ./node_modules/ramda/es/fromPairs.js␊ + │ ├─ ./node_modules/ramda/es/groupBy.js␊ + │ ├─ ./node_modules/ramda/es/groupWith.js␊ + │ ├─ ./node_modules/ramda/es/gt.js␊ + │ ├─ ./node_modules/ramda/es/gte.js␊ + │ ├─ ./node_modules/ramda/es/has.js␊ + │ ├─ ./node_modules/ramda/es/hasIn.js␊ + │ ├─ ./node_modules/ramda/es/head.js␊ + │ ├─ ./node_modules/ramda/es/identical.js␊ + │ ├─ ./node_modules/ramda/es/identity.js␊ + │ ├─ ./node_modules/ramda/es/ifElse.js␊ + │ ├─ ./node_modules/ramda/es/inc.js␊ + │ ├─ ./node_modules/ramda/es/index.js␊ + │ ├─ ./node_modules/ramda/es/indexBy.js␊ + │ ├─ ./node_modules/ramda/es/indexOf.js␊ + │ ├─ ./node_modules/ramda/es/init.js␊ + │ ├─ ./node_modules/ramda/es/innerJoin.js␊ + │ ├─ ./node_modules/ramda/es/insert.js␊ + │ ├─ ./node_modules/ramda/es/insertAll.js␊ + │ ├─ ./node_modules/ramda/es/internal/_Set.js␊ + │ ├─ ./node_modules/ramda/es/internal/_aperture.js␊ + │ ├─ ./node_modules/ramda/es/internal/_arity.js␊ + │ ├─ ./node_modules/ramda/es/internal/_arrayFromIterator.js␊ + │ ├─ ./node_modules/ramda/es/internal/_assign.js␊ + │ ├─ ./node_modules/ramda/es/internal/_checkForMethod.js␊ + │ ├─ ./node_modules/ramda/es/internal/_clone.js␊ + │ ├─ ./node_modules/ramda/es/internal/_cloneRegExp.js␊ + │ ├─ ./node_modules/ramda/es/internal/_complement.js␊ + │ ├─ ./node_modules/ramda/es/internal/_concat.js␊ + │ ├─ ./node_modules/ramda/es/internal/_contains.js␊ + │ ├─ ./node_modules/ramda/es/internal/_containsWith.js␊ + │ ├─ ./node_modules/ramda/es/internal/_createPartialApplicator.js␊ + │ ├─ ./node_modules/ramda/es/internal/_curry1.js␊ + │ ├─ ./node_modules/ramda/es/internal/_curry2.js␊ + │ ├─ ./node_modules/ramda/es/internal/_curry3.js␊ + │ ├─ ./node_modules/ramda/es/internal/_curryN.js␊ + │ ├─ ./node_modules/ramda/es/internal/_dispatchable.js␊ + │ ├─ ./node_modules/ramda/es/internal/_dropLast.js␊ + │ ├─ ./node_modules/ramda/es/internal/_dropLastWhile.js␊ + │ ├─ ./node_modules/ramda/es/internal/_equals.js␊ + │ ├─ ./node_modules/ramda/es/internal/_filter.js␊ + │ ├─ ./node_modules/ramda/es/internal/_flatCat.js␊ + │ ├─ ./node_modules/ramda/es/internal/_forceReduced.js␊ + │ ├─ ./node_modules/ramda/es/internal/_functionName.js␊ + │ ├─ ./node_modules/ramda/es/internal/_has.js␊ + │ ├─ ./node_modules/ramda/es/internal/_identity.js␊ + │ ├─ ./node_modules/ramda/es/internal/_indexOf.js␊ + │ ├─ ./node_modules/ramda/es/internal/_isArguments.js␊ + │ ├─ ./node_modules/ramda/es/internal/_isArray.js␊ + │ ├─ ./node_modules/ramda/es/internal/_isArrayLike.js␊ + │ ├─ ./node_modules/ramda/es/internal/_isFunction.js␊ + │ ├─ ./node_modules/ramda/es/internal/_isInteger.js␊ + │ ├─ ./node_modules/ramda/es/internal/_isNumber.js␊ + │ ├─ ./node_modules/ramda/es/internal/_isObject.js␊ + │ ├─ ./node_modules/ramda/es/internal/_isPlaceholder.js␊ + │ ├─ ./node_modules/ramda/es/internal/_isRegExp.js␊ + │ ├─ ./node_modules/ramda/es/internal/_isString.js␊ + │ ├─ ./node_modules/ramda/es/internal/_isTransformer.js␊ + │ ├─ ./node_modules/ramda/es/internal/_makeFlat.js␊ + │ ├─ ./node_modules/ramda/es/internal/_map.js␊ + │ ├─ ./node_modules/ramda/es/internal/_objectAssign.js␊ + │ ├─ ./node_modules/ramda/es/internal/_of.js␊ + │ ├─ ./node_modules/ramda/es/internal/_pipe.js␊ + │ ├─ ./node_modules/ramda/es/internal/_pipeP.js␊ + │ ├─ ./node_modules/ramda/es/internal/_quote.js␊ + │ ├─ ./node_modules/ramda/es/internal/_reduce.js␊ + │ ├─ ./node_modules/ramda/es/internal/_reduced.js␊ + │ ├─ ./node_modules/ramda/es/internal/_stepCat.js␊ + │ ├─ ./node_modules/ramda/es/internal/_toISOString.js␊ + │ ├─ ./node_modules/ramda/es/internal/_toString.js␊ + │ ├─ ./node_modules/ramda/es/internal/_xall.js␊ + │ ├─ ./node_modules/ramda/es/internal/_xany.js␊ + │ ├─ ./node_modules/ramda/es/internal/_xaperture.js␊ + │ ├─ ./node_modules/ramda/es/internal/_xchain.js␊ + │ ├─ ./node_modules/ramda/es/internal/_xdrop.js␊ + │ ├─ ./node_modules/ramda/es/internal/_xdropLast.js␊ + │ ├─ ./node_modules/ramda/es/internal/_xdropLastWhile.js␊ + │ ├─ ./node_modules/ramda/es/internal/_xdropRepeatsWith.js␊ + │ ├─ ./node_modules/ramda/es/internal/_xdropWhile.js␊ + │ ├─ ./node_modules/ramda/es/internal/_xfBase.js␊ + │ ├─ ./node_modules/ramda/es/internal/_xfilter.js␊ + │ ├─ ./node_modules/ramda/es/internal/_xfind.js␊ + │ ├─ ./node_modules/ramda/es/internal/_xfindIndex.js␊ + │ ├─ ./node_modules/ramda/es/internal/_xfindLast.js␊ + │ ├─ ./node_modules/ramda/es/internal/_xfindLastIndex.js␊ + │ ├─ ./node_modules/ramda/es/internal/_xmap.js␊ + │ ├─ ./node_modules/ramda/es/internal/_xreduceBy.js␊ + │ ├─ ./node_modules/ramda/es/internal/_xtake.js␊ + │ ├─ ./node_modules/ramda/es/internal/_xtakeWhile.js␊ + │ ├─ ./node_modules/ramda/es/internal/_xtap.js␊ + │ ├─ ./node_modules/ramda/es/internal/_xwrap.js␊ + │ ├─ ./node_modules/ramda/es/intersection.js␊ + │ ├─ ./node_modules/ramda/es/intersperse.js␊ + │ ├─ ./node_modules/ramda/es/into.js␊ + │ ├─ ./node_modules/ramda/es/invert.js␊ + │ ├─ ./node_modules/ramda/es/invertObj.js␊ + │ ├─ ./node_modules/ramda/es/invoker.js␊ + │ ├─ ./node_modules/ramda/es/is.js␊ + │ ├─ ./node_modules/ramda/es/isEmpty.js␊ + │ ├─ ./node_modules/ramda/es/isNil.js␊ + │ ├─ ./node_modules/ramda/es/join.js␊ + │ ├─ ./node_modules/ramda/es/juxt.js␊ + │ ├─ ./node_modules/ramda/es/keys.js␊ + │ ├─ ./node_modules/ramda/es/keysIn.js␊ + │ ├─ ./node_modules/ramda/es/last.js␊ + │ ├─ ./node_modules/ramda/es/lastIndexOf.js␊ + │ ├─ ./node_modules/ramda/es/length.js␊ + │ ├─ ./node_modules/ramda/es/lens.js␊ + │ ├─ ./node_modules/ramda/es/lensIndex.js␊ + │ ├─ ./node_modules/ramda/es/lensPath.js␊ + │ ├─ ./node_modules/ramda/es/lensProp.js␊ + │ ├─ ./node_modules/ramda/es/lift.js␊ + │ ├─ ./node_modules/ramda/es/liftN.js␊ + │ ├─ ./node_modules/ramda/es/lt.js␊ + │ ├─ ./node_modules/ramda/es/lte.js␊ + │ ├─ ./node_modules/ramda/es/map.js␊ + │ ├─ ./node_modules/ramda/es/mapAccum.js␊ + │ ├─ ./node_modules/ramda/es/mapAccumRight.js␊ + │ ├─ ./node_modules/ramda/es/mapObjIndexed.js␊ + │ ├─ ./node_modules/ramda/es/match.js␊ + │ ├─ ./node_modules/ramda/es/mathMod.js␊ + │ ├─ ./node_modules/ramda/es/max.js␊ + │ ├─ ./node_modules/ramda/es/maxBy.js␊ + │ ├─ ./node_modules/ramda/es/mean.js␊ + │ ├─ ./node_modules/ramda/es/median.js␊ + │ ├─ ./node_modules/ramda/es/memoize.js␊ + │ ├─ ./node_modules/ramda/es/memoizeWith.js␊ + │ ├─ ./node_modules/ramda/es/merge.js␊ + │ ├─ ./node_modules/ramda/es/mergeAll.js␊ + │ ├─ ./node_modules/ramda/es/mergeDeepLeft.js␊ + │ ├─ ./node_modules/ramda/es/mergeDeepRight.js␊ + │ ├─ ./node_modules/ramda/es/mergeDeepWith.js␊ + │ ├─ ./node_modules/ramda/es/mergeDeepWithKey.js␊ + │ ├─ ./node_modules/ramda/es/mergeWith.js␊ + │ ├─ ./node_modules/ramda/es/mergeWithKey.js␊ + │ ├─ ./node_modules/ramda/es/min.js␊ + │ ├─ ./node_modules/ramda/es/minBy.js␊ + │ ├─ ./node_modules/ramda/es/modulo.js␊ + │ ├─ ./node_modules/ramda/es/multiply.js␊ + │ ├─ ./node_modules/ramda/es/nAry.js␊ + │ ├─ ./node_modules/ramda/es/negate.js␊ + │ ├─ ./node_modules/ramda/es/none.js␊ + │ ├─ ./node_modules/ramda/es/not.js␊ + │ ├─ ./node_modules/ramda/es/nth.js␊ + │ ├─ ./node_modules/ramda/es/nthArg.js␊ + │ ├─ ./node_modules/ramda/es/o.js␊ + │ ├─ ./node_modules/ramda/es/objOf.js␊ + │ ├─ ./node_modules/ramda/es/of.js␊ + │ ├─ ./node_modules/ramda/es/omit.js␊ + │ ├─ ./node_modules/ramda/es/once.js␊ + │ ├─ ./node_modules/ramda/es/or.js␊ + │ ├─ ./node_modules/ramda/es/over.js␊ + │ ├─ ./node_modules/ramda/es/pair.js␊ + │ ├─ ./node_modules/ramda/es/partial.js␊ + │ ├─ ./node_modules/ramda/es/partialRight.js␊ + │ ├─ ./node_modules/ramda/es/partition.js␊ + │ ├─ ./node_modules/ramda/es/path.js␊ + │ ├─ ./node_modules/ramda/es/pathEq.js␊ + │ ├─ ./node_modules/ramda/es/pathOr.js␊ + │ ├─ ./node_modules/ramda/es/pathSatisfies.js␊ + │ ├─ ./node_modules/ramda/es/pick.js␊ + │ ├─ ./node_modules/ramda/es/pickAll.js␊ + │ ├─ ./node_modules/ramda/es/pickBy.js␊ + │ ├─ ./node_modules/ramda/es/pipe.js␊ + │ ├─ ./node_modules/ramda/es/pipeK.js␊ + │ ├─ ./node_modules/ramda/es/pipeP.js␊ + │ ├─ ./node_modules/ramda/es/pluck.js␊ + │ ├─ ./node_modules/ramda/es/prepend.js␊ + │ ├─ ./node_modules/ramda/es/product.js␊ + │ ├─ ./node_modules/ramda/es/project.js␊ + │ ├─ ./node_modules/ramda/es/prop.js␊ + │ ├─ ./node_modules/ramda/es/propEq.js␊ + │ ├─ ./node_modules/ramda/es/propIs.js␊ + │ ├─ ./node_modules/ramda/es/propOr.js␊ + │ ├─ ./node_modules/ramda/es/propSatisfies.js␊ + │ ├─ ./node_modules/ramda/es/props.js␊ + │ ├─ ./node_modules/ramda/es/range.js␊ + │ ├─ ./node_modules/ramda/es/reduce.js␊ + │ ├─ ./node_modules/ramda/es/reduceBy.js␊ + │ ├─ ./node_modules/ramda/es/reduceRight.js␊ + │ ├─ ./node_modules/ramda/es/reduceWhile.js␊ + │ ├─ ./node_modules/ramda/es/reduced.js␊ + │ ├─ ./node_modules/ramda/es/reject.js␊ + │ ├─ ./node_modules/ramda/es/remove.js␊ + │ ├─ ./node_modules/ramda/es/repeat.js␊ + │ ├─ ./node_modules/ramda/es/replace.js␊ + │ ├─ ./node_modules/ramda/es/reverse.js␊ + │ ├─ ./node_modules/ramda/es/scan.js␊ + │ ├─ ./node_modules/ramda/es/sequence.js␊ + │ ├─ ./node_modules/ramda/es/set.js␊ + │ ├─ ./node_modules/ramda/es/slice.js␊ + │ ├─ ./node_modules/ramda/es/sort.js␊ + │ ├─ ./node_modules/ramda/es/sortBy.js␊ + │ ├─ ./node_modules/ramda/es/sortWith.js␊ + │ ├─ ./node_modules/ramda/es/split.js␊ + │ ├─ ./node_modules/ramda/es/splitAt.js␊ + │ ├─ ./node_modules/ramda/es/splitEvery.js␊ + │ ├─ ./node_modules/ramda/es/splitWhen.js␊ + │ ├─ ./node_modules/ramda/es/startsWith.js␊ + │ ├─ ./node_modules/ramda/es/subtract.js␊ + │ ├─ ./node_modules/ramda/es/sum.js␊ + │ ├─ ./node_modules/ramda/es/symmetricDifference.js␊ + │ ├─ ./node_modules/ramda/es/symmetricDifferenceWith.js␊ + │ ├─ ./node_modules/ramda/es/tail.js␊ + │ ├─ ./node_modules/ramda/es/take.js␊ + │ ├─ ./node_modules/ramda/es/takeLast.js␊ + │ ├─ ./node_modules/ramda/es/takeLastWhile.js␊ + │ ├─ ./node_modules/ramda/es/takeWhile.js␊ + │ ├─ ./node_modules/ramda/es/tap.js␊ + │ ├─ ./node_modules/ramda/es/test.js␊ + │ ├─ ./node_modules/ramda/es/times.js␊ + │ ├─ ./node_modules/ramda/es/toLower.js␊ + │ ├─ ./node_modules/ramda/es/toPairs.js␊ + │ ├─ ./node_modules/ramda/es/toPairsIn.js␊ + │ ├─ ./node_modules/ramda/es/toString.js␊ + │ ├─ ./node_modules/ramda/es/toUpper.js␊ + │ ├─ ./node_modules/ramda/es/transduce.js␊ + │ ├─ ./node_modules/ramda/es/transpose.js␊ + │ ├─ ./node_modules/ramda/es/traverse.js␊ + │ ├─ ./node_modules/ramda/es/trim.js␊ + │ ├─ ./node_modules/ramda/es/tryCatch.js␊ + │ ├─ ./node_modules/ramda/es/type.js␊ + │ ├─ ./node_modules/ramda/es/unapply.js␊ + │ ├─ ./node_modules/ramda/es/unary.js␊ + │ ├─ ./node_modules/ramda/es/uncurryN.js␊ + │ ├─ ./node_modules/ramda/es/unfold.js␊ + │ ├─ ./node_modules/ramda/es/union.js␊ + │ ├─ ./node_modules/ramda/es/unionWith.js␊ + │ ├─ ./node_modules/ramda/es/uniq.js␊ + │ ├─ ./node_modules/ramda/es/uniqBy.js␊ + │ ├─ ./node_modules/ramda/es/uniqWith.js␊ + │ ├─ ./node_modules/ramda/es/unless.js␊ + │ ├─ ./node_modules/ramda/es/unnest.js␊ + │ ├─ ./node_modules/ramda/es/until.js␊ + │ ├─ ./node_modules/ramda/es/update.js␊ + │ ├─ ./node_modules/ramda/es/useWith.js␊ + │ ├─ ./node_modules/ramda/es/values.js␊ + │ ├─ ./node_modules/ramda/es/valuesIn.js␊ + │ ├─ ./node_modules/ramda/es/view.js␊ + │ ├─ ./node_modules/ramda/es/when.js␊ + │ ├─ ./node_modules/ramda/es/where.js␊ + │ ├─ ./node_modules/ramda/es/whereEq.js␊ + │ ├─ ./node_modules/ramda/es/without.js␊ + │ ├─ ./node_modules/ramda/es/xprod.js␊ + │ ├─ ./node_modules/ramda/es/zip.js␊ + │ ├─ ./node_modules/ramda/es/zipObj.js␊ + │ └─ ./node_modules/ramda/es/zipWith.js␊ + │ ␊ + └─ reasons:␊ + └─ ./index2.js 1:0-15 [import()]␊ + `, + '––––––––––––––––––––', + '', + '', + ` FILE ./index.js [entry]␊ + ├─ imported: 1 time␊ + ├─ size: 1 KiB␊ + └─ chunks: main`, + '––––––––––––––––––––', + '', + '', + ` FILE (webpack)/buildin/global.js␊ + ├─ imported: 1 time␊ + ├─ size: 1 KiB␊ + ├─ chunks: main␊ + └─ reasons:␊ + └─ ./node_modules/lodash/lodash.js␊ + `, + '––––––––––––––––––––', + '', + '', + ` FILE (webpack)/buildin/module.js␊ + ├─ imported: 1 time␊ + ├─ size: 1 KiB␊ + ├─ chunks: main␊ + └─ reasons:␊ + └─ ./node_modules/lodash/lodash.js␊ + `, + '––––––––––––––––––––', + '', + '', + ` FILE ./index2.js [entry]␊ + ├─ imported: 1 time␊ + ├─ size: 1 KiB␊ + └─ chunks: secondary`, + '––––––––––––––––––––', + '', + '', + ] + +## should properly print multi entry stats.json with no chunks information + +> Snapshot 1 + + [ + '', + ` MODULE lodash␊ + ├─ imported: 2 times␊ + ├─ deps count: 0␊ + ├─ size: 527 KiB [for all included files]␊ + ├─ type: [direct]␊ + ├─ locations: ␊ + │ └─ ./node_modules/lodash/␊ + │ ␊ + ├─ files: ␊ + │ └─ ./node_modules/lodash/lodash.js␊ + │ ␊ + └─ reasons:␊ + ├─ ./index.js 1:0-28 [harmony side effect evaluation]␊ + └─ ./index.js 3:12-18 [harmony import specifier]␊ + `, + '––––––––––––––––––––', + '', + '', + ` FILE ./index.js [entry]␊ + ├─ imported: 1 time␊ + ├─ size: 1 KiB`, + '––––––––––––––––––––', + '', + '', + ` FILE ./index2.js [entry]␊ + ├─ imported: 1 time␊ + ├─ size: unknown`, + '––––––––––––––––––––', + '', + '', + ` FILE (webpack)/buildin/global.js␊ + ├─ imported: 1 time␊ + ├─ size: 1 KiB␊ + └─ reasons:␊ + └─ ./node_modules/lodash/lodash.js␊ + `, + '––––––––––––––––––––', + '', + '', + ` FILE (webpack)/buildin/module.js␊ + ├─ imported: 1 time␊ + ├─ size: 1 KiB␊ + └─ reasons:␊ + └─ ./node_modules/lodash/lodash.js␊ + `, + '––––––––––––––––––––', + '', + '', + ] + +## should properly print reasons without clearName + +> Snapshot 1 + + [ + '', + ` MODULE react-tap-event-plugin␊ + ├─ imported: 1 time␊ + ├─ deps count: 0␊ + ├─ size: 1 KiB [for all included files]␊ + ├─ type: [direct]␊ + ├─ chunks: 1␊ + ├─ locations: ␊ + │ └─ delegated ./node_modules/react-tap-event-plugin/␊ + │ ␊ + ├─ files: ␊ + │ └─ delegated ./node_modules/react-tap-event-plugin/src/injectTapEventPlugin.js from dll-reference reactVendors_489ff309e47766c80b1e␊ + │ ␊ + └─ reasons:␊ + └─ ./src/client/index.js 17:27-60 [cjs require]␊ + `, + '––––––––––––––––––––', + '', + '', + ] + +## should properly print simple stats.json + +> Snapshot 1 + + [ + '', + ` MODULE lodash␊ + ├─ imported: 2 times␊ + ├─ deps count: 0␊ + ├─ size: 527 KiB [for all included files]␊ + ├─ type: [direct]␊ + ├─ chunks: main␊ + ├─ locations: ␊ + │ └─ ./node_modules/lodash/␊ + │ ␊ + ├─ files: ␊ + │ └─ ./node_modules/lodash/lodash.js␊ + │ ␊ + └─ reasons:␊ + ├─ ./index.js 1:0-28 [harmony side effect evaluation]␊ + └─ ./index.js 3:12-18 [harmony import specifier]␊ + `, + '––––––––––––––––––––', + '', + '', + ` FILE ./index.js [entry]␊ + ├─ imported: 1 time␊ + ├─ size: 1 KiB␊ + └─ chunks: main`, + '––––––––––––––––––––', + '', + '', + ` FILE (webpack)/buildin/global.js␊ + ├─ imported: 1 time␊ + ├─ size: 1 KiB␊ + ├─ chunks: main␊ + └─ reasons:␊ + └─ ./node_modules/lodash/lodash.js␊ + `, + '––––––––––––––––––––', + '', + '', + ` FILE (webpack)/buildin/module.js␊ + ├─ imported: 1 time␊ + ├─ size: 1 KiB␊ + ├─ chunks: main␊ + └─ reasons:␊ + └─ ./node_modules/lodash/lodash.js␊ + `, + '––––––––––––––––––––', + '', + '', + ] + +## should properly print stats.json with nested children + +> Snapshot 1 + + [ + '', + ` MODULE nervjs␊ + ├─ imported: 258 times␊ + ├─ deps count: 0␊ + ├─ size: 112 KiB [for all included files]␊ + ├─ type: [direct]␊ + ├─ chunks: main␊ + ├─ locations: ␊ + │ └─ ../node_modules/.registry.npmjs.org/nervjs/␊ + │ ␊ + ├─ files: ␊ + │ └─ ../node_modules/.registry.npmjs.org/nervjs/1.2.14-beta.0/node_modules/nervjs/dist/index.esm.js␊ + │ ␊ + └─ reasons:␊ + ├─ ./index.js + 14 modules 6:40-53 [harmony import specifier]␊ + ├─ react-timeago␊ + │ └─ ../node_modules/.registry.npmjs.org/react-timeago/3.4.3/node_modules/react-timeago/lib/index.js 14:13-29 [cjs require]␊ + ├─ ./index.js + 14 modules 9:7-13 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 32:5-12 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 10:0-50 [harmony side effect evaluation]␊ + ├─ ./index.js + 14 modules 37:38-47 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 74:11-24 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 76:7-20 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 78:8-21 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 80:7-20 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 82:7-20 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 85:15-28 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 88:15-28 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 91:7-20 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 91:38-51 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 94:7-20 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 7:0-50 [harmony side effect evaluation]␊ + ├─ ./index.js + 14 modules 9:42-51 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 21:11-24 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 21:38-51 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 21:74-87 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 21:237-250 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 25:24-37 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 25:131-144 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 29:39-52 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 31:38-51 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 31:116-129 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 35:33-46 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 35:75-88 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 37:29-42 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 39:37-50 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 39:87-100 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 39:227-240 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 42:18-31 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 42:62-75 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 42:147-160 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 46:35-48 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 46:71-84 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 46:117-130 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 50:117-130 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 2:0-39 [harmony side effect evaluation]␊ + ├─ ./index.js + 14 modules 3:15-28 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 7:0-60 [harmony side effect evaluation]␊ + ├─ ./index.js + 14 modules 8:59-68 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 82:4-12 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 1:0-50 [harmony side effect evaluation]␊ + ├─ ./index.js + 14 modules 8:36-45 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 17:11-24 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 22:7-20 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 22:38-51 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 24:27-40 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 27:7-20 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 27:36-49 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 30:17-30 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 32:22-35 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 32:51-64 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 35:17-30 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 37:24-37 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 40:7-20 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 43:20-33 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 45:17-30 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 48:7-20 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 51:21-34 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 53:17-30 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 55:7-20 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 58:7-20 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 11:0-50 [harmony side effect evaluation]␊ + ├─ ./index.js + 14 modules 24:12-25 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 26:10-23 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 26:113-126 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 33:60-69 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 82:11-24 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 134:31-44 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 136:38-51 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 13:0-50 [harmony side effect evaluation]␊ + ├─ ./index.js + 14 modules 54:40-49 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 160:21-34 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 175:21-34 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 187:11-24 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 190:7-20 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 194:8-21 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 199:20-33 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 203:7-20 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 205:66-79 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 209:7-20 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 211:54-67 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 214:15-28 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 216:7-20 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 216:45-58 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 2:37-46 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 8:11-24 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 10:7-20 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 10:35-48 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 10:63-76 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 6:0-50 [harmony side effect evaluation]␊ + ├─ ./index.js + 14 modules 12:48-57 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 54:11-24 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 3:0-50 [harmony side effect evaluation]␊ + ├─ ./index.js + 14 modules 4:40-49 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 18:11-24 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 20:7-20 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 24:7-20 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 2:34-43 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 24:11-24 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 2:0-50 [harmony side effect evaluation]␊ + ├─ ./index.js + 14 modules 5:40-49 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 22:11-24 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 28:7-20 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 32:9-22 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 34:7-20 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 38:42-55 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 42:7-20 [harmony import specifier]␊ + ├─ reactstrap␊ + │ └─ ../node_modules/.registry.npmjs.org/reactstrap/5.0.0-alpha.4/node_modules/reactstrap/lib/Media.js 9:13-29 [cjs require]␊ + ├─ ./index.js + 14 modules 2:0-56 [harmony side effect evaluation]␊ + ├─ ./components/App.js + 13 modules 3:15-28 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 1:0-50 [harmony side effect evaluation]␊ + ├─ ./components/App.js + 13 modules 8:36-45 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 17:11-24 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 22:7-20 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 22:38-51 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 24:27-40 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 27:7-20 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 27:36-49 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 30:17-30 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 32:22-35 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 32:51-64 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 35:17-30 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 37:24-37 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 40:7-20 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 43:20-33 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 45:17-30 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 48:7-20 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 51:21-34 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 53:17-30 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 55:7-20 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 58:7-20 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 7:0-50 [harmony side effect evaluation]␊ + ├─ ./components/App.js + 13 modules 9:42-51 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 21:11-24 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 21:38-51 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 21:74-87 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 21:237-250 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 25:24-37 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 25:131-144 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 29:39-52 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 31:38-51 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 31:116-129 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 35:33-46 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 35:75-88 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 37:29-42 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 39:37-50 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 39:87-100 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 39:227-240 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 42:18-31 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 42:62-75 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 42:147-160 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 46:35-48 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 46:71-84 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 46:117-130 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 50:117-130 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 2:0-39 [harmony side effect evaluation]␊ + ├─ ./components/App.js + 13 modules 7:0-60 [harmony side effect evaluation]␊ + ├─ ./components/App.js + 13 modules 8:59-68 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 37:38-47 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 11:0-50 [harmony side effect evaluation]␊ + ├─ ./components/App.js + 13 modules 24:12-25 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 26:10-23 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 26:113-126 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 33:60-69 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 82:11-24 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 134:31-44 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 136:38-51 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 2:37-46 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 8:11-24 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 10:7-20 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 10:35-48 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 10:63-76 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 13:0-50 [harmony side effect evaluation]␊ + ├─ ./components/App.js + 13 modules 54:40-49 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 160:21-34 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 175:21-34 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 187:11-24 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 190:7-20 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 194:8-21 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 199:20-33 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 203:7-20 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 205:66-79 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 209:7-20 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 211:54-67 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 214:15-28 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 216:7-20 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 216:45-58 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 6:0-50 [harmony side effect evaluation]␊ + ├─ ./components/App.js + 13 modules 12:48-57 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 54:11-24 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 2:34-43 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 24:11-24 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 3:0-50 [harmony side effect evaluation]␊ + ├─ ./components/App.js + 13 modules 4:40-49 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 18:11-24 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 20:7-20 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 24:7-20 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 2:0-50 [harmony side effect evaluation]␊ + ├─ ./components/App.js + 13 modules 5:40-49 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 22:11-24 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 28:7-20 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 32:9-22 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 34:7-20 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 38:42-55 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 42:7-20 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 10:0-50 [harmony side effect evaluation]␊ + ├─ ./components/App.js + 13 modules 74:11-24 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 76:7-20 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 78:8-21 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 80:7-20 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 82:7-20 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 85:15-28 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 88:15-28 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 91:7-20 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 91:38-51 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 94:7-20 [harmony import specifier]␊ + └─ ./components/App.js + 13 modules 82:4-12 [harmony import specifier]␊ + `, + '––––––––––––––––––––', + '', + '', + ` MODULE reactstrap␊ + ├─ imported: 74 times␊ + ├─ deps count: 37␊ + ├─ size: 74 KiB [for all included files]␊ + ├─ type: [direct]␊ + ├─ chunks: main␊ + ├─ locations: ␊ + │ └─ ../node_modules/.registry.npmjs.org/reactstrap/␊ + │ ␊ + ├─ files: ␊ + │ ├─ ../node_modules/.registry.npmjs.org/reactstrap/5.0.0-alpha.4/node_modules/reactstrap/lib/NavItem.js␊ + │ ├─ ../node_modules/.registry.npmjs.org/reactstrap/5.0.0-alpha.4/node_modules/reactstrap/lib/Media.js␊ + │ ├─ ../node_modules/.registry.npmjs.org/reactstrap/5.0.0-alpha.4/node_modules/reactstrap/lib/Container.js␊ + │ ├─ ../node_modules/.registry.npmjs.org/reactstrap/5.0.0-alpha.4/node_modules/reactstrap/lib/CardText.js␊ + │ ├─ ../node_modules/.registry.npmjs.org/reactstrap/5.0.0-alpha.4/node_modules/reactstrap/lib/utils.js␊ + │ ├─ ../node_modules/.registry.npmjs.org/reactstrap/5.0.0-alpha.4/node_modules/reactstrap/lib/NavbarBrand.js␊ + │ ├─ ../node_modules/.registry.npmjs.org/reactstrap/5.0.0-alpha.4/node_modules/reactstrap/lib/Navbar.js␊ + │ ├─ ../node_modules/.registry.npmjs.org/reactstrap/5.0.0-alpha.4/node_modules/reactstrap/lib/CardFooter.js␊ + │ ├─ ../node_modules/.registry.npmjs.org/reactstrap/5.0.0-alpha.4/node_modules/reactstrap/lib/NavLink.js␊ + │ ├─ ../node_modules/.registry.npmjs.org/reactstrap/5.0.0-alpha.4/node_modules/reactstrap/lib/Button.js␊ + │ ├─ ../node_modules/.registry.npmjs.org/reactstrap/5.0.0-alpha.4/node_modules/reactstrap/lib/CardBody.js␊ + │ ├─ ../node_modules/.registry.npmjs.org/reactstrap/5.0.0-alpha.4/node_modules/reactstrap/lib/Nav.js␊ + │ └─ ../node_modules/.registry.npmjs.org/reactstrap/5.0.0-alpha.4/node_modules/reactstrap/lib/CardDeck.js␊ + │ ␊ + └─ reasons:␊ + ├─ ./index.js + 14 modules 4:0-45 [harmony side effect evaluation]␊ + ├─ ./index.js + 14 modules 27:21-28 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 32:36-43 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 3:0-41 [harmony side effect evaluation]␊ + ├─ ./index.js + 14 modules 32:23-28 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 2:0-49 [harmony side effect evaluation]␊ + ├─ ./index.js + 14 modules 22:21-30 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 11:0-47 [harmony side effect evaluation]␊ + ├─ ./index.js + 14 modules 216:21-29 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 7:0-53 [harmony side effect evaluation]␊ + ├─ ./index.js + 14 modules 22:52-63 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 6:0-43 [harmony side effect evaluation]␊ + ├─ ./index.js + 14 modules 17:25-31 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 2:0-51 [harmony side effect evaluation]␊ + ├─ ./index.js + 14 modules 18:25-35 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 5:0-45 [harmony side effect evaluation]␊ + ├─ ./index.js + 14 modules 27:50-57 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 32:65-72 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 40:21-28 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 48:21-28 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 55:21-28 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 39:241-247 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 9:0-43 [harmony side effect evaluation]␊ + ├─ ./index.js + 14 modules 199:34-40 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 205:80-86 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 1:0-43 [harmony side effect evaluation]␊ + ├─ ./index.js + 14 modules 20:21-27 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 10:0-47 [harmony side effect evaluation]␊ + ├─ ./index.js + 14 modules 214:29-37 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 3:0-37 [harmony side effect evaluation]␊ + ├─ ./index.js + 14 modules 24:41-44 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 37:38-41 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 45:31-34 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 53:31-34 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 9:0-47 [harmony side effect evaluation]␊ + ├─ ./index.js + 14 modules 134:45-53 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 6:0-43 [harmony side effect evaluation]␊ + ├─ ./components/App.js + 13 modules 39:241-247 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 9:0-43 [harmony side effect evaluation]␊ + ├─ ./components/App.js + 13 modules 199:34-40 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 205:80-86 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 1:0-43 [harmony side effect evaluation]␊ + ├─ ./components/App.js + 13 modules 20:21-27 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 5:0-45 [harmony side effect evaluation]␊ + ├─ ./components/App.js + 13 modules 27:50-57 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 32:65-72 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 40:21-28 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 48:21-28 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 55:21-28 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 3:0-37 [harmony side effect evaluation]␊ + ├─ ./components/App.js + 13 modules 24:41-44 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 37:38-41 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 45:31-34 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 53:31-34 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 4:0-45 [harmony side effect evaluation]␊ + ├─ ./components/App.js + 13 modules 27:21-28 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 32:36-43 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 9:0-47 [harmony side effect evaluation]␊ + ├─ ./components/App.js + 13 modules 134:45-53 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 11:0-47 [harmony side effect evaluation]␊ + ├─ ./components/App.js + 13 modules 216:21-29 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 10:0-47 [harmony side effect evaluation]␊ + ├─ ./components/App.js + 13 modules 214:29-37 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 3:0-41 [harmony side effect evaluation]␊ + ├─ ./components/App.js + 13 modules 32:23-28 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 2:0-51 [harmony side effect evaluation]␊ + ├─ ./components/App.js + 13 modules 18:25-35 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 7:0-53 [harmony side effect evaluation]␊ + ├─ ./components/App.js + 13 modules 22:52-63 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 17:25-31 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 2:0-49 [harmony side effect evaluation]␊ + └─ ./components/App.js + 13 modules 22:21-30 [harmony import specifier]␊ + `, + '––––––––––––––––––––', + '', + '', + ` MODULE autobind-decorator␊ + ├─ imported: 44 times␊ + ├─ deps count: 0␊ + ├─ size: 7 KiB [for all included files]␊ + ├─ type: [direct]␊ + ├─ chunks: main␊ + ├─ locations: ␊ + │ └─ C:/Users/admin/.pnpm-store/2/registry.npmjs.org/autobind-decorator/␊ + │ ␊ + ├─ files: ␊ + │ └─ C:/Users/admin/.pnpm-store/2/registry.npmjs.org/autobind-decorator/2.1.0/node_modules/autobind-decorator/lib/index.js␊ + │ ␊ + └─ reasons:␊ + ├─ ./index.js + 14 modules 99:74-78 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 60:205-209 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 5:0-38 [harmony side effect evaluation]␊ + ├─ ./index.js + 14 modules 53:63-67 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 6:0-38 [harmony side effect evaluation]␊ + ├─ ./index.js + 14 modules 136:67-71 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 136:223-227 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 136:377-381 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 8:0-38 [harmony side effect evaluation]␊ + ├─ ./index.js + 14 modules 144:65-69 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 144:217-221 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 144:369-373 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 144:526-530 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 144:681-685 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 225:59-63 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 225:211-215 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 225:367-371 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 225:517-521 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 60:61-65 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 9:0-38 [harmony side effect evaluation]␊ + ├─ ./components/App.js + 13 modules 9:0-38 [harmony side effect evaluation]␊ + ├─ ./components/App.js + 13 modules 99:74-78 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 5:0-38 [harmony side effect evaluation]␊ + ├─ ./components/App.js + 13 modules 53:63-67 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 6:0-38 [harmony side effect evaluation]␊ + ├─ ./components/App.js + 13 modules 136:67-71 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 136:223-227 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 136:377-381 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 8:0-38 [harmony side effect evaluation]␊ + ├─ ./components/App.js + 13 modules 144:65-69 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 144:217-221 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 144:369-373 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 144:526-530 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 144:681-685 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 225:59-63 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 225:211-215 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 225:367-371 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 225:517-521 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 60:61-65 [harmony import specifier]␊ + └─ ./components/App.js + 13 modules 60:205-209 [harmony import specifier]␊ + `, + '––––––––––––––––––––', + '', + '', + ` MODULE proptypes␊ + ├─ imported: 30 times␊ + ├─ deps count: 0␊ + ├─ size: 3 KiB [for all included files]␊ + ├─ type: [direct]␊ + ├─ chunks: main␊ + ├─ locations: ␊ + │ └─ C:/Users/admin/.pnpm-store/2/registry.npmjs.org/proptypes/␊ + │ ␊ + ├─ files: ␊ + │ └─ C:/Users/admin/.pnpm-store/2/registry.npmjs.org/proptypes/1.1.0/node_modules/proptypes/disabled.js␊ + │ ␊ + └─ reasons:␊ + ├─ ./index.js + 14 modules 142:7-16 [harmony import specifier]␊ + ├─ reactstrap␊ + │ └─ ../node_modules/.registry.npmjs.org/reactstrap/5.0.0-alpha.4/node_modules/reactstrap/lib/Media.js 13:17-38 [cjs require]␊ + ├─ ./index.js + 14 modules 143:8-17 [harmony import specifier]␊ + ├─ ./index.js + 14 modules 5:0-35 [harmony side effect evaluation]␊ + ├─ ./components/App.js + 13 modules 142:7-16 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 143:8-17 [harmony import specifier]␊ + └─ ./components/App.js + 13 modules 5:0-35 [harmony side effect evaluation]␊ + `, + '––––––––––––––––––––', + '', + '', + ` MODULE classnames␊ + ├─ imported: 24 times␊ + ├─ deps count: 0␊ + ├─ size: 3 KiB [for all included files]␊ + ├─ type: [transitive]␊ + │ └─ classnames -> reactstrap␊ + │ ␊ + ├─ chunks: main␊ + ├─ locations: ␊ + │ └─ C:/Users/admin/.pnpm-store/2/registry.npmjs.org/classnames/␊ + │ ␊ + ├─ files: ␊ + │ └─ C:/Users/admin/.pnpm-store/2/registry.npmjs.org/classnames/2.2.5/node_modules/classnames/index.js␊ + │ ␊ + └─ reasons:␊ + └─ reactstrap␊ + └─ ../node_modules/.registry.npmjs.org/reactstrap/5.0.0-alpha.4/node_modules/reactstrap/lib/Media.js 17:18-39 [cjs require]␊ + `, + '––––––––––––––––––––', + '', + '', + ` MODULE react-timeago␊ + ├─ imported: 4 times␊ + ├─ deps count: 1␊ + ├─ size: 18 KiB [for all included files]␊ + ├─ type: [direct]␊ + ├─ chunks: main␊ + ├─ locations: ␊ + │ └─ ../node_modules/.registry.npmjs.org/react-timeago/␊ + │ ␊ + ├─ files: ␊ + │ ├─ ../node_modules/.registry.npmjs.org/react-timeago/3.4.3/node_modules/react-timeago/lib/dateParser.js␊ + │ ├─ ../node_modules/.registry.npmjs.org/react-timeago/3.4.3/node_modules/react-timeago/lib/index.js␊ + │ └─ ../node_modules/.registry.npmjs.org/react-timeago/3.4.3/node_modules/react-timeago/lib/defaultFormatter.js␊ + │ ␊ + └─ reasons:␊ + ├─ ./index.js + 14 modules 1:0-36 [harmony side effect evaluation]␊ + ├─ ./index.js + 14 modules 42:21-28 [harmony import specifier]␊ + ├─ ./components/App.js + 13 modules 1:0-36 [harmony side effect evaluation]␊ + └─ ./components/App.js + 13 modules 42:21-28 [harmony import specifier]␊ + `, + '––––––––––––––––––––', + '', + '', + ` MODULE lodash.isfunction␊ + ├─ imported: 2 times␊ + ├─ deps count: 0␊ + ├─ size: 5 KiB [for all included files]␊ + ├─ type: [transitive]␊ + │ └─ lodash.isfunction -> reactstrap␊ + │ ␊ + ├─ chunks: main␊ + ├─ locations: ␊ + │ └─ ../node_modules/.registry.npmjs.org/lodash.isfunction/␊ + │ ␊ + ├─ files: ␊ + │ └─ ../node_modules/.registry.npmjs.org/lodash.isfunction/3.0.8/node_modules/lodash.isfunction/index.js␊ + │ ␊ + └─ reasons:␊ + └─ reactstrap␊ + └─ ../node_modules/.registry.npmjs.org/reactstrap/5.0.0-alpha.4/node_modules/reactstrap/lib/utils.js 20:14-42 [cjs require]␊ + `, + '––––––––––––––––––––', + '', + '', + ` MODULE bootstrap␊ + ├─ imported: 2 times␊ + ├─ deps count: 0␊ + ├─ size: 235 KiB [for all included files]␊ + ├─ type: [direct]␊ + ├─ chunks: main␊ + ├─ locations: ␊ + │ └─ ../node_modules/.registry.npmjs.org/bootstrap/␊ + │ ␊ + ├─ files: ␊ + │ ├─ css ../node_modules/.registry.npmjs.org/css-loader/0.28.10/node_modules/css-loader!../node_modules/.registry.npmjs.org/postcss-loader/2.1.1/node_modules/postcss-loader/lib!../node_modules/.registry.npmjs.org/bootstrap/4.0.0/node_modules/bootstrap/dist/css/bootstrap.min.css␊ + │ ├─ ../node_modules/.registry.npmjs.org/bootstrap/4.0.0/node_modules/bootstrap/dist/css/bootstrap.min.css␊ + │ └─ ../node_modules/.registry.npmjs.org/css-loader/0.28.10/node_modules/css-loader!../node_modules/.registry.npmjs.org/postcss-loader/2.1.1/node_modules/postcss-loader/lib!../node_modules/.registry.npmjs.org/bootstrap/4.0.0/node_modules/bootstrap/dist/css/bootstrap.min.css␊ + │ ␊ + └─ reasons:␊ + └─ ./index.js + 14 modules 3:0-46 [harmony side effect evaluation]␊ + `, + '––––––––––––––––––––', + '', + '', + ` MODULE webpack␊ + ├─ imported: 2 times␊ + ├─ deps count: 0␊ + ├─ size: 2 KiB [for all included files]␊ + ├─ type: [transitive]␊ + │ ␊ + ├─ chunks: main␊ + ├─ locations: ␊ + │ └─ ../node_modules/.registry.npmjs.org/webpack/␊ + │ ␊ + ├─ files: ␊ + │ ├─ ../node_modules/.registry.npmjs.org/webpack/4.1.1/node_modules/webpack/buildin/global.js␊ + │ └─ ../node_modules/.registry.npmjs.org/webpack/4.1.1/node_modules/webpack/buildin/module.js␊ + │ ␊ + └─ reasons:␊ + └─ lodash␊ + └─ ../node_modules/.registry.npmjs.org/lodash/4.17.5/node_modules/lodash/lodash.js 1:0-77 [cjs require]␊ + `, + '––––––––––––––––––––', + '', + '', + ` FILE ./index.js + 14 modules [entry]␊ + ├─ imported: 1 time␊ + ├─ size: 36 KiB␊ + └─ chunks: main`, + '––––––––––––––––––––', + '', + '', + ` FILE ./components/main.css␊ + ├─ imported: 1 time␊ + ├─ size: 1 KiB␊ + ├─ chunks: main␊ + └─ reasons:␊ + └─ ./index.js + 14 modules 4:0-31 [harmony side effect evaluation]␊ + `, + '––––––––––––––––––––', + '', + '', + ` MODULE html-webpack-plugin [entry]␊ + ├─ imported: 1 time␊ + ├─ deps count: 1␊ + ├─ size: 2 KiB [for all included files]␊ + ├─ type: [transitive]␊ + │ ␊ + ├─ chunks: main␊ + ├─ locations: ␊ + │ └─ ../node_modules/.registry.npmjs.org/html-webpack-plugin/␊ + │ ␊ + └─ files: ␊ + │ └─ ../node_modules/.registry.npmjs.org/html-webpack-plugin/3.0.6/node_modules/html-webpack-plugin/lib/loader.js!./index.ejs␊ + │ `, + '––––––––––––––––––––', + '', + '', + ` MODULE lodash␊ + ├─ imported: 1 time␊ + ├─ deps count: 1␊ + ├─ size: 527 KiB [for all included files]␊ + ├─ type: [transitive]␊ + │ ␊ + ├─ chunks: main␊ + ├─ locations: ␊ + │ └─ ../node_modules/.registry.npmjs.org/lodash/␊ + │ ␊ + ├─ files: ␊ + │ └─ ../node_modules/.registry.npmjs.org/lodash/4.17.5/node_modules/lodash/lodash.js␊ + │ ␊ + └─ reasons:␊ + └─ html-webpack-plugin␊ + └─ ../node_modules/.registry.npmjs.org/html-webpack-plugin/3.0.6/node_modules/html-webpack-plugin/lib/loader.js!./index.ejs 1:8-98 [cjs require]␊ + `, + '––––––––––––––––––––', + '', + '', + ` FILE ./components/App.js + 13 modules [entry]␊ + ├─ imported: 1 time␊ + ├─ size: 35 KiB␊ + └─ chunks: main`, + '––––––––––––––––––––', + '', + '', + ] + +## should properly print stats.json with nested children second example + +> Snapshot 1 + + [ + '', + ` MODULE html-webpack-plugin [entry]␊ + ├─ imported: 1 time␊ + ├─ deps count: 1␊ + ├─ size: 2 KiB [for all included files]␊ + ├─ type: [transitive]␊ + │ ␊ + ├─ chunks: 1␊ + ├─ locations: ␊ + │ └─ ../node_modules/.registry.npmjs.org/html-webpack-plugin/␊ + │ ␊ + └─ files: ␊ + │ └─ ../node_modules/.registry.npmjs.org/html-webpack-plugin/3.2.0/node_modules/html-webpack-plugin/lib/loader.js!./index.ejs␊ + │ `, + '––––––––––––––––––––', + '', + '', + ` MODULE lodash␊ + ├─ imported: 1 time␊ + ├─ deps count: 1␊ + ├─ size: 527 KiB [for all included files]␊ + ├─ type: [transitive]␊ + │ ␊ + ├─ chunks: 1␊ + ├─ locations: ␊ + │ └─ ../node_modules/.registry.npmjs.org/lodash/␊ + │ ␊ + ├─ files: ␊ + │ └─ ../node_modules/.registry.npmjs.org/lodash/4.17.5/node_modules/lodash/lodash.js␊ + │ ␊ + └─ reasons:␊ + └─ html-webpack-plugin␊ + └─ ../node_modules/.registry.npmjs.org/html-webpack-plugin/3.2.0/node_modules/html-webpack-plugin/lib/loader.js!./index.ejs 1:8-100 [cjs require]␊ + `, + '––––––––––––––––––––', + '', + '', + ` MODULE webpack␊ + ├─ imported: 1 time␊ + ├─ deps count: 0␊ + ├─ size: 1 KiB [for all included files]␊ + ├─ type: [transitive]␊ + │ ␊ + ├─ chunks: 1␊ + ├─ locations: ␊ + │ └─ ../node_modules/.registry.npmjs.org/webpack/␊ + │ ␊ + ├─ files: ␊ + │ └─ ../node_modules/.registry.npmjs.org/webpack/4.5.0/node_modules/webpack/buildin/module.js␊ + │ ␊ + └─ reasons:␊ + └─ lodash␊ + └─ ../node_modules/.registry.npmjs.org/lodash/4.17.5/node_modules/lodash/lodash.js 1:0-77 [cjs require]␊ + `, + '––––––––––––––––––––', + '', + '', + ] diff --git a/lib/reporter/__tests__/__snapshots__/print.js.snap b/lib/reporter/__tests__/__snapshots__/print.js.snap new file mode 100644 index 0000000..8b72381 Binary files /dev/null and b/lib/reporter/__tests__/__snapshots__/print.js.snap differ diff --git a/lib/__tests__/print.js b/lib/reporter/__tests__/print.js similarity index 96% rename from lib/__tests__/print.js rename to lib/reporter/__tests__/print.js index 4d076b5..0a752b0 100644 --- a/lib/__tests__/print.js +++ b/lib/reporter/__tests__/print.js @@ -2,8 +2,8 @@ const stripAnsi = require("strip-ansi"); const test = require("ava"); const fixtures = require("fixturez"); const f = fixtures(__dirname); -const getStats = require("../get-stats"); -const analyze = require("../analyze"); +const getStats = require("../../get-stats"); +const analyze = require("../../analyze"); const print = require("../print"); const createPrint = () => { diff --git a/lib/reporter/index.js b/lib/reporter/index.js new file mode 100644 index 0000000..f3c4bff --- /dev/null +++ b/lib/reporter/index.js @@ -0,0 +1,21 @@ +// @flow + +const print = require("./print"); + +/* :: +import type { Module, Chunks } from "../analyze"; + +export type Reporter = { + print( + report: Array, + chunks: Chunks, + flags: { [key: string]: any }, + limit: number, + logger?: (msg?: string) => void + ): void; +} +*/ + +const reporter /*: Reporter */ = { print }; + +module.exports = reporter; diff --git a/lib/print.js b/lib/reporter/print.js similarity index 99% rename from lib/print.js rename to lib/reporter/print.js index b1b6eb1..37a0235 100644 --- a/lib/print.js +++ b/lib/reporter/print.js @@ -4,7 +4,7 @@ const chalk = require("chalk"); const treeify = require("treeify"); /*:: -import type { Module, Reason, SubReason, Chunks } from './analyze'; +import type { Module, Reason, SubReason, Chunks } from '../analyze'; */ const greenBadge = label => chalk.bgGreen.black(` ${label} `);