FormidableLabs / inspectpack

An inspection tool for Webpack frontend JavaScript bundles.
MIT License
592 stars 20 forks source link

[BUG] Application roots without node_modules on disk are missed for versions inference. #103

Closed TxHawks closed 5 years ago

TxHawks commented 5 years ago

In a Next JS app with a custom webpack config, inpectpack prints the following after build, without the information about the actual bundles: screen shot 2019-02-23 at 20 04 26

It is a Next v8.0.1 app, running on node v10.8.0 and Webpack 4.29.0.

Relevant part of next.config.js is:

{
  // ...

  webpack: (config, opts) =>{
    // ...

    // Check for duplicate code from dependencies
    if (!isServer) {
      config.plugins.push(
        new DuplicatesPlugin({ verbose: true, })
      );
    }

    return config
  },
}

Any insight would be appreciated

ryan-roemer commented 5 years ago

I haven't tried things with next8 specifically yet, but next-pre8 build had a bad habit of hiding all the information.

Can you change your config to:

new DuplicatesPlugin({ 
  verbose: true, 
  emitHandler: (report) => console.log(report),
})

and report back if anything is different?

If nothing is different, would it be possible for you to get me a stripped down public repository with just the configuration you have (removing all your actual app code) so I have something to pull down and try to reproduce locally that exhibits some of the errors you're finding? Thanks!

ryan-roemer commented 5 years ago

The other debugging steps you can take with your existing private repository is to dump out a full stats object by adding something like:

const { StatsWriterPlugin } = require("webpack-stats-plugin");

// ...
config.plugins.push(
  new StatsWriterPlugin({ 
    filename: `stats-${isServer ? "server" : "client"}.json`,
    fields: ["assets", "modules"],
   }),

Then you'll get two stats files stats-server.json and stats-client.json which we can run a lot more analysis on with the inspectpack CLI tool.

With both of those, I'd run the duplicates and versions reports. These two separate reports should provide us with some raw information (that is cobbled together more intelligently in the webpack plugin):

$ inspectpack -b /PATH/TO/stats-TYPE.json -a duplicates
$ inspectpack -b /PATH/TO/stats-TYPE.json -a versions
ryan-roemer commented 5 years ago

Oh, haha, I saw your project might be open source. If you can get me instructions (and maybe a branch) to install + reproduce what you're seeing, I can jump in and diagnose 😄

TxHawks commented 5 years ago

Same outcome with emitHandler: (report) => console.log(report).

The repository is https://github.com/Haaretz/htz-frontend.

To reproduce, checkout perf/webpack-bundle-size and run yarn && yarn workspace @haaretz/haaretz.co.il build.

Very much appreciate the help

TxHawks commented 5 years ago

I just realized the setup is a bit complex. The webpack config is in <ProjectRoot>/packages/libs/htz-react-base/base-next-config/webpack.js

We have stats-webpack-plugin installed, not webpack-stats-plugin. If you need it, it should be installed to the @haaretz/htz-react-base workspace

ryan-roemer commented 5 years ago

I've tried to follow the steps, but I'm getting this error:

ModuleBuildError: Module build failed (from /Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/next/dist/build/webpack/loaders/next-babel-loader.js):
TypeError: (0 , _utils.setStateOptions) is not a function
    at PluginPass.enter (/Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/styled-jsx/dist/babel.js:289:38)
    at newFn (/Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/@babel/traverse/lib/visitors.js:193:21)
    at NodePath._call (/Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/@babel/traverse/lib/path/context.js:53:20)
    at NodePath.call (/Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/@babel/traverse/lib/path/context.js:40:17)
    at NodePath.visit (/Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/@babel/traverse/lib/path/context.js:88:12)
    at TraversalContext.visitQueue (/Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/@babel/traverse/lib/context.js:118:16)
    at TraversalContext.visitSingle (/Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/@babel/traverse/lib/context.js:90:19)
    at TraversalContext.visit (/Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/@babel/traverse/lib/context.js:146:19)
    at Function.traverse.node (/Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/@babel/traverse/lib/index.js:94:17)
    at traverse (/Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/@babel/traverse/lib/index.js:76:12)
    at transformFile (/Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/@babel/core/lib/transformation/index.js:88:29)
    at runSync (/Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/@babel/core/lib/transformation/index.js:45:3)
    at runAsync (/Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/@babel/core/lib/transformation/index.js:35:14)
    at process.nextTick (/Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/@babel/core/lib/transform.js:34:34)
    at process._tickCallback (internal/process/next_tick.js:61:11)
    at runLoaders (/Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/webpack/lib/NormalModule.js:301:20)
    at /Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/loader-runner/lib/LoaderRunner.js:364:11
    at /Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/loader-runner/lib/LoaderRunner.js:230:18
    at context.callback (/Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/loader-runner/lib/LoaderRunner.js:111:13)
    at loader.call.then.err (/Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/next/node_modules/babel-loader/lib/index.js:45:103)
    at process._tickCallback (internal/process/next_tick.js:68:7)

I'm using:

 $ node --version
v10.13.0
$ yarn --version
1.13.0
TxHawks commented 5 years ago

After which step?

ryan-roemer commented 5 years ago
yarn workspace @haaretz/haaretz.co.il build
ryan-roemer commented 5 years ago

Here's mostly full output:

$ yarn workspace @haaretz/haaretz.co.il build
yarn workspace v1.13.0
yarn run v1.13.0
$ yarn clean && htz-scripts build
$ htz-scripts clean

Cleaning /Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/packages/apps/haaretz.co.il
- .jest
- .next
- dist
Next.js app package detected.
Next App BuildID is: LATEST

✖ Client
  Compiled with some errors in 2.27s

● Server █████████████████████████ building (63%) 22/22 modules 0 active

> Using external babel configuration
> Location: "/Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/packages/apps/haaretz.co.il/babel.config.js"

✖ Client
  Compiled with some errors in 2.27s

✖ Server
  Compiled with some errors in 2.30s

ModuleBuildError: Module build failed (from /Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/next/dist/build/webpack/loaders/next-babel-loader.js):
TypeError: (0 , _utils.setStateOptions) is not a function
    at PluginPass.enter (/Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/styled-jsx/dist/babel.js:289:38)
    at newFn (/Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/@babel/traverse/lib/visitors.js:193:21)
    at NodePath._call (/Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/@babel/traverse/lib/path/context.js:53:20)
    at NodePath.call (/Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/@babel/traverse/lib/path/context.js:40:17)
    at NodePath.visit (/Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/@babel/traverse/lib/path/context.js:88:12)
    at TraversalContext.visitQueue (/Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/@babel/traverse/lib/context.js:118:16)
    at TraversalContext.visitSingle (/Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/@babel/traverse/lib/context.js:90:19)
    at TraversalContext.visit (/Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/@babel/traverse/lib/context.js:146:19)
    at Function.traverse.node (/Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/@babel/traverse/lib/index.js:94:17)
    at traverse (/Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/@babel/traverse/lib/index.js:76:12)
    at transformFile (/Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/@babel/core/lib/transformation/index.js:88:29)
    at runSync (/Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/@babel/core/lib/transformation/index.js:45:3)
    at runAsync (/Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/@babel/core/lib/transformation/index.js:35:14)
    at process.nextTick (/Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/@babel/core/lib/transform.js:34:34)
    at process._tickCallback (internal/process/next_tick.js:61:11)
    at runLoaders (/Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/webpack/lib/NormalModule.js:301:20)
    at /Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/loader-runner/lib/LoaderRunner.js:364:11
    at /Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/loader-runner/lib/LoaderRunner.js:230:18
    at context.callback (/Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/loader-runner/lib/LoaderRunner.js:111:13)
    at loader.call.then.err (/Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/next/node_modules/babel-loader/lib/index.js:45:103)
    at process._tickCallback (internal/process/next_tick.js:68:7)
# ... and lots more repeats of that error ...
TxHawks commented 5 years ago

That's very odd. I just cloned a fresh copy of the repo and it all works fine.

using:

node --version
v10.8.0
yarn --version
1.12.3
TxHawks commented 5 years ago

Oh, okay - I think I know what it may be. There's a line in styled-jsx that we patch with a postinstall script until it is fixed.

Not sure why it didn't work for you, but do you mind running yarn run postinstall && yarn workspace haaretz.co.il build?

TxHawks commented 5 years ago

Actually, that's not it... It's a whole different error that the one we're patching. I'm completely unable to reproduce this error.

ryan-roemer commented 5 years ago

I'm using fresh install, and the exact versions of yarn and node you are. Here's the problem:

// /Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/packages/libs/htz-react-base/scripts/fixStyledJsx.js

var _utils = require("./_utils");

// /Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/styled-jsx/dist/_utils.js
// FILE IS TOTALLY EMPTY

I restored it from source here: https://unpkg.com/styled-jsx@3.2.1/dist/_utils.js and then on running the build get the error you filed in upstream issue on styled-jsx. Then, on a hunch I ran the postinstall and then it finally builds.

... so no idea what that means for new users / fresh clones, but I can at least move forward on diagnosis now...

TxHawks commented 5 years ago

Wow, that's a lot of effort you put into debuging this. Thanks

ryan-roemer commented 5 years ago

Side note -- the styled-jsx/dist/_utils.js thing appeared to be some weird yarn cache issue. A yarn cache clean cleared it up...

ryan-roemer commented 5 years ago

There's definitely something up. Duplicates are detected, but versions are not being inferred correctly.

I made this build change to produce a stats object:

diff --git a/packages/libs/htz-react-base/base-next-config/webpack.js b/packages/libs/htz-react-base/base-next-config/webpack.js
index b60e56ba..e4c38729 100644
--- a/packages/libs/htz-react-base/base-next-config/webpack.js
+++ b/packages/libs/htz-react-base/base-next-config/webpack.js
@@ -6,6 +6,7 @@

 const path = require('path');
 const StatsPlugin = require('stats-webpack-plugin');
+const { StatsWriterPlugin, } = require('webpack-stats-plugin');
 const { DuplicatesPlugin, } = require('inspectpack/plugin');

 // ////////////////// //
@@ -49,6 +50,10 @@ module.exports = function configWebpack(
       new DuplicatesPlugin({
         verbose: true,
         emitHandler: report => console.log(report),
+      }),
+      new StatsWriterPlugin({
+        filename: `stats-${isServer ? "server" : "client"}.json`,
+        fields: ["assets", "modules"],
       })
     );
   }

and ran these reports:

Duplicates

Looks correct.

$ inspectpack -s packages/apps/haaretz.co.il/.next/stats-client.json -a duplicates
inspectpack --action=duplicates
===============================

## Summary
* Extra Files (unique):         10
* Extra Sources (non-unique):   12
* Extra Bytes (non-unique):     15019

## `static/chunks/commons.b98963a347d35c8a1d80.js`
* css-in-js-utils/lib/hyphenateProperty.js
  * Meta: Files 1, Sources 2, Bytes 958
  0. (Files 1, Sources 2, Bytes 958)
    (479) /Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/css-in-js-utils/lib/hyphenateProperty.js
    (479) /Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/inline-style-prefixer/node_modules/css-in-js-utils/lib/hyphenateProperty.js
* fbjs/lib/shallowEqual.js
  * Meta: Files 2, Sources 2, Bytes 3231
  0. (Files 1, Sources 1, Bytes 1616)
    (1616) /Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/react-addons-shallow-compare/node_modules/fbjs/lib/shallowEqual.js
  1. (Files 1, Sources 1, Bytes 1615)
    (1615) /Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/fbjs/lib/shallowEqual.js
* hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js
  * Meta: Files 2, Sources 2, Bytes 5446
  0. (Files 1, Sources 1, Bytes 2559)
    (2559) /Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js
  1. (Files 1, Sources 1, Bytes 2887)
    (2887) /Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/react-apollo/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js
* prop-types/factoryWithThrowingShims.js
  * Meta: Files 2, Sources 2, Bytes 3090
  0. (Files 1, Sources 1, Bytes 1469)
    (1469) /Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/prop-types/factoryWithThrowingShims.js
  1. (Files 1, Sources 1, Bytes 1621)
    (1621) /Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/react-apollo/node_modules/prop-types/factoryWithThrowingShims.js
* prop-types/index.js
  * Meta: Files 2, Sources 2, Bytes 1666
  0. (Files 1, Sources 1, Bytes 956)
    (956) /Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/prop-types/index.js
  1. (Files 1, Sources 1, Bytes 710)
    (710) /Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/react-apollo/node_modules/prop-types/index.js
* prop-types/lib/ReactPropTypesSecret.js
  * Meta: Files 1, Sources 2, Bytes 628
  0. (Files 1, Sources 2, Bytes 628)
    (314) /Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/prop-types/lib/ReactPropTypesSecret.js
    (314) /Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/react-apollo/node_modules/prop-types/lib/ReactPropTypesSecret.js

Versions

Should not be empty. Likely roots aren't inferred right or something.

$ inspectpack -s packages/apps/haaretz.co.il/.next/stats-client.json -a versions
inspectpack --action=versions
=============================

## Summary
* Packages with skews:      0
* Total resolved versions:  0
* Total installed packages: 0
* Total depended packages:  0
TxHawks commented 5 years ago

I assume this has something to do with iur build configuration. We use next-transpile-modules to transpile packages internal to the monorepo, so I can imagine it does all sorts of strange things to how modules are resolved

ryan-roemer commented 5 years ago

My intuition is that inspectpack:

  1. Isn't inferring the root package.json at: https://github.com/Haaretz/htz-frontend/blob/master/packages/apps/haaretz.co.il/package.json
  2. I've got review the logic to see if the versions node_modules traversal algorithm correctly handles flattened node_modules higher up in file tree.

It needs to do the following:

  1. Find and read: packages/apps/haaretz.co.il/package.json
  2. Assemble installed packages metadata information looking at both: packages/apps/haaretz.co.il/node_modules and node_modules.

In the more general case, it needs to handle anything from starting package to every directory down to project root.

I'm guessing this is going to take me a little while to dig into, create regression tests, and get a correct solution (inspectpack doesn't require any inputted information about the roots of an app / project, inferring the app root, project root, etc. And I don't have a ton of free time next. So, I'll definitely dig into this when I get a chance, I'm just not sure of the exact timeline.

In the meantime, I'm hoping that the duplicates report information gives you enough info to hone down duplicates in your app in a useful way!

TxHawks commented 5 years ago

The duplicates report does help, and you've done plenty. Thanks a lot

TxHawks commented 5 years ago

If it helps, duplicate-package-checker-webpack-plugin seems to report correctly

ryan-roemer commented 5 years ago

Thanks for continuing to research! I'm familiar with the plugin, and duplicate-package-checker doesn't try to infer the logical dependency tree, it just goes off of what's on disk. So, inspectpack gets this already from our duplicates internal action:

    (314) /Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/prop-types/lib/ReactPropTypesSecret.js
    (314) /Users/rye/scm/vendor/inspectpack-next-issue-htz-frontend/node_modules/react-apollo/node_modules/prop-types/lib/ReactPropTypesSecret.js

that we could read package.json:version and be output all of that. Our versions feature goes a lot further by traversing the entire logical tree so you can see what brought in the separate deps irrespective of where they get flattened to on disk.

The plugin bug is that by versions having a bug nothing gets outputted....

It's worth considering that if it takes me too long to do the versions inference, I could just dump out what that plugin does because the information already is in inspectpack internally...

ryan-roemer commented 5 years ago

I have a WIP PR up with a regression test fixture that exhibits the same buggy behavior as the original repository in this issue. I'm working on the actual failing regression tests, then the fix.

https://github.com/FormidableLabs/inspectpack/pull/104

mefu commented 5 years ago

Hey there, we are also experiencing this bug. It happens in our projects within yarn workspace with dependencies installed to a folder higher up (e.g. ../../node_modules). It works correctly when I move project out of yarn workspace and install dependencies normally (to ./node_modules). You've already figured this out so this is kinda useless, just wanted add more data. Also, I want to thank you for how fast you are responding to this issue.

ryan-roemer commented 5 years ago

Hi folks, just wanted to post an update -- I've made good progress with regression tests and supporting unit tests to isolate the issue and head us towards a solution that still keeps the versions inference blazing fast (the technical challenging is limiting / optimizing the disk i/o to read node_modules so that it doesn't make for awful performance).

WIP work is still at: https://github.com/FormidableLabs/inspectpack/pull/104

I expect I'll be able to ship a fix this week. Thanks!

ryan-roemer commented 5 years ago

Current WIP output:

$ yarn workspace @haaretz/haaretz.co.il build

Duplicate Sources / Packages - Duplicates found! ⚠️

* Duplicates: Found 10 similar files across 12 code sources (both identical + similar)
  accounting for 15019 bundled bytes.
* Packages: Found 2 packages with 2 resolved, 2 installed, and 3 depended versions.

## static/chunks/commons.b98963a347d35c8a1d80.js
hoist-non-react-statics (Found 1 resolved, 1 installed, 1 depended. Latest 3.2.0.)
  3.2.0
    ../hoist-non-react-statics
      * Dependency graph
        next@8.0.1 -> hoist-non-react-statics@3.2.0
      * Duplicated files in static/chunks/commons.b98963a347d35c8a1d80.js
        hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js (S, 2559)

prop-types (Found 1 resolved, 1 installed, 2 depended. Latest 15.6.2.)
  15.6.2
    ../prop-types
      * Dependency graph
        next@8.0.1 -> prop-types@15.6.2
        next@8.0.1 -> next-server@8.0.1 -> prop-types@15.6.2
      * Duplicated files in static/chunks/commons.b98963a347d35c8a1d80.js
        prop-types/factoryWithThrowingShims.js (S, 1469)
        prop-types/index.js (S, 956)
        prop-types/lib/ReactPropTypesSecret.js (I, 314)

* Understanding the report: Need help with the details? See:
  https://github.com/FormidableLabs/inspectpack/#diagnosing-duplicates
* Fixing bundle duplicates: An introductory guide:
  https://github.com/FormidableLabs/inspectpack/#fixing-bundle-duplicates
TxHawks commented 5 years ago

Thank you so much for putting all this work into it!

I think I don't really understand the report. How come hoist-non-react-statics is reported as a duplicate if there is only one source for it, and why prop-types is duplicated if both next and next-server include the same version of prop-types?

Thanks again for putting in all this work to fix this issue

ryan-roemer commented 5 years ago

Yep, good observation -- there's still something fishy. And react-apollo isn't being inferred which has the prop-types duplicates.

ryan-roemer commented 5 years ago

UPDATE: Package roots aren't being correctly inferred...

ryan-roemer commented 5 years ago

There is still some wonkiness (e.g., multiple of the same files reported in the duplicate module section for prop-types which is incorrect), but looking a lot better.

Error: Duplicate Sources / Packages - Duplicates found! ⚠️

* Duplicates: Found 10 similar files across 12 code sources (both identical + similar)
  accounting for 15019 bundled bytes.
* Packages: Found 4 packages with 8 resolved, 9 installed, and 89 depended versions.

## static/chunks/commons.b98963a347d35c8a1d80.js
css-in-js-utils (Found 2 resolved, 3 installed, 60 depended. Latest 3.0.0.)
  2.0.1
    ../../../~/fela-dom/~/css-in-js-utils
      * Dependency graph
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> fela-dom@^7.0.9 -> css-in-js-utils@^2.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> fela-dom@^7.0.9 -> css-in-js-utils@^2.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> fela-dom@^7.0.7 -> css-in-js-utils@^2.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-theme@^0.1.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> fela-dom@^7.0.9 -> css-in-js-utils@^2.0.0
        @haaretz/haaretz.co.il@0.0.0 -> react-fela@^7.2.0 -> fela-bindings@^2.3.1 -> fela-dom@^7.0.9 -> css-in-js-utils@^2.0.0
        @haaretz/haaretz.co.il@0.0.0 -> react-fela@^7.2.0 -> fela-dom@^7.0.9 -> css-in-js-utils@^2.0.0
      * Duplicated files in static/chunks/commons.b98963a347d35c8a1d80.js

    ../../../~/inline-style-prefixer/~/css-in-js-utils
      * Dependency graph
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/fela-utils@^0.1.0 -> inline-style-prefixer@^5.0.3 -> css-in-js-utils@^2.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> @haaretz/fela-utils@^0.1.0 -> inline-style-prefixer@^5.0.3 -> css-in-js-utils@^2.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-theme@^0.1.0 -> @haaretz/fela-utils@^0.1.0 -> inline-style-prefixer@^5.0.3 -> css-in-js-utils@^2.0.0
      * Duplicated files in static/chunks/commons.b98963a347d35c8a1d80.js
        css-in-js-utils/lib/hyphenateProperty.js (I, 479)

  3.0.0
    ../../../~/css-in-js-utils
      * Dependency graph
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> fela-dom@^7.0.9 -> fela-utils@^8.0.8 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> fela-tools@^5.1.7 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> fela-tools@^5.1.7 -> fela-utils@^8.1.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> fela-tools@^5.1.7 -> fela@^6.2.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> fela-tools@^5.1.7 -> fela@^6.2.3 -> fela-utils@^8.1.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/fela-utils@^0.1.0 -> fela-plugin-extend@^6.0.11 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/fela-utils@^0.1.0 -> fela-plugin-extend@^6.0.11 -> fela-utils@^8.1.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/fela-utils@^0.1.0 -> fela-plugin-fallback-value@^5.0.17 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/fela-utils@^0.1.0 -> fela-plugin-placeholder-prefixer@^5.0.18 -> fela-plugin-custom-property@^7.0.5 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/fela-utils@^0.1.0 -> fela-plugin-unit@^5.0.16 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/fela-utils@^0.1.0 -> fela-tools@^5.1.5 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/fela-utils@^0.1.0 -> fela-tools@^5.1.5 -> fela-utils@^8.1.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/fela-utils@^0.1.0 -> fela-tools@^5.1.5 -> fela@^6.2.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/fela-utils@^0.1.0 -> fela-tools@^5.1.5 -> fela@^6.2.3 -> fela-utils@^8.1.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> fela-dom@^7.0.9 -> fela-utils@^8.0.8 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> fela-tools@^5.1.7 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> fela-tools@^5.1.7 -> fela-utils@^8.1.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> fela-tools@^5.1.7 -> fela@^6.2.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> fela-tools@^5.1.7 -> fela@^6.2.3 -> fela-utils@^8.1.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> @haaretz/fela-utils@^0.1.0 -> fela-plugin-extend@^6.0.11 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> @haaretz/fela-utils@^0.1.0 -> fela-plugin-extend@^6.0.11 -> fela-utils@^8.1.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> @haaretz/fela-utils@^0.1.0 -> fela-plugin-fallback-value@^5.0.17 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> @haaretz/fela-utils@^0.1.0 -> fela-plugin-placeholder-prefixer@^5.0.18 -> fela-plugin-custom-property@^7.0.5 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> @haaretz/fela-utils@^0.1.0 -> fela-plugin-unit@^5.0.16 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> @haaretz/fela-utils@^0.1.0 -> fela-tools@^5.1.5 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> @haaretz/fela-utils@^0.1.0 -> fela-tools@^5.1.5 -> fela-utils@^8.1.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> @haaretz/fela-utils@^0.1.0 -> fela-tools@^5.1.5 -> fela@^6.2.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> @haaretz/fela-utils@^0.1.0 -> fela-tools@^5.1.5 -> fela@^6.2.3 -> fela-utils@^8.1.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> fela-dom@^7.0.7 -> fela-utils@^8.0.8 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-theme@^0.1.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> fela-dom@^7.0.9 -> fela-utils@^8.0.8 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-theme@^0.1.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> fela-tools@^5.1.7 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-theme@^0.1.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> fela-tools@^5.1.7 -> fela-utils@^8.1.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-theme@^0.1.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> fela-tools@^5.1.7 -> fela@^6.2.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-theme@^0.1.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> fela-tools@^5.1.7 -> fela@^6.2.3 -> fela-utils@^8.1.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-theme@^0.1.0 -> @haaretz/fela-utils@^0.1.0 -> fela-plugin-extend@^6.0.11 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-theme@^0.1.0 -> @haaretz/fela-utils@^0.1.0 -> fela-plugin-extend@^6.0.11 -> fela-utils@^8.1.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-theme@^0.1.0 -> @haaretz/fela-utils@^0.1.0 -> fela-plugin-fallback-value@^5.0.17 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-theme@^0.1.0 -> @haaretz/fela-utils@^0.1.0 -> fela-plugin-placeholder-prefixer@^5.0.18 -> fela-plugin-custom-property@^7.0.5 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-theme@^0.1.0 -> @haaretz/fela-utils@^0.1.0 -> fela-plugin-unit@^5.0.16 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-theme@^0.1.0 -> @haaretz/fela-utils@^0.1.0 -> fela-tools@^5.1.5 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-theme@^0.1.0 -> @haaretz/fela-utils@^0.1.0 -> fela-tools@^5.1.5 -> fela-utils@^8.1.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-theme@^0.1.0 -> @haaretz/fela-utils@^0.1.0 -> fela-tools@^5.1.5 -> fela@^6.2.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-theme@^0.1.0 -> @haaretz/fela-utils@^0.1.0 -> fela-tools@^5.1.5 -> fela@^6.2.3 -> fela-utils@^8.1.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> fela@^6.1.7 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> fela@^6.1.7 -> fela-utils@^8.1.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> react-fela@^7.2.0 -> fela-bindings@^2.3.1 -> fela-dom@^7.0.9 -> fela-utils@^8.0.8 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> react-fela@^7.2.0 -> fela-bindings@^2.3.1 -> fela-tools@^5.1.7 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> react-fela@^7.2.0 -> fela-bindings@^2.3.1 -> fela-tools@^5.1.7 -> fela-utils@^8.1.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> react-fela@^7.2.0 -> fela-bindings@^2.3.1 -> fela-tools@^5.1.7 -> fela@^6.2.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> react-fela@^7.2.0 -> fela-bindings@^2.3.1 -> fela-tools@^5.1.7 -> fela@^6.2.3 -> fela-utils@^8.1.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> react-fela@^7.2.0 -> fela-dom@^7.0.9 -> fela-utils@^8.0.8 -> css-in-js-utils@^3.0.0
      * Duplicated files in static/chunks/commons.b98963a347d35c8a1d80.js
        css-in-js-utils/lib/hyphenateProperty.js (I, 479)

fbjs (Found 2 resolved, 2 installed, 5 depended. Latest 1.0.0.)
  0.8.17
    ../../../~/react-addons-shallow-compare/~/fbjs
      * Dependency graph
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> react-addons-shallow-compare@^15.6.2 -> fbjs@^0.8.4
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> react-addons-shallow-compare@^15.6.2 -> fbjs@^0.8.4
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-theme@^0.1.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> react-addons-shallow-compare@^15.6.2 -> fbjs@^0.8.4
        @haaretz/haaretz.co.il@0.0.0 -> react-fela@^7.2.0 -> fela-bindings@^2.3.1 -> react-addons-shallow-compare@^15.6.2 -> fbjs@^0.8.4
      * Duplicated files in static/chunks/commons.b98963a347d35c8a1d80.js
        fbjs/lib/shallowEqual.js (S, 1616)

  1.0.0
    ../../../~/fbjs
      * Dependency graph
        @haaretz/haaretz.co.il@0.0.0 -> react-apollo@^2.4.1 -> fbjs@^1.0.0
      * Duplicated files in static/chunks/commons.b98963a347d35c8a1d80.js
        fbjs/lib/shallowEqual.js (S, 1615)

hoist-non-react-statics (Found 2 resolved, 2 installed, 2 depended. Latest 3.3.0.)
  3.2.0
    ../../../~/hoist-non-react-statics
      * Dependency graph
        @haaretz/haaretz.co.il@0.0.0 -> next@^8.0.1 -> hoist-non-react-statics@3.2.0
      * Duplicated files in static/chunks/commons.b98963a347d35c8a1d80.js
        hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js (S, 2559)

  3.3.0
    ../../../~/react-apollo/~/hoist-non-react-statics
      * Dependency graph
        @haaretz/haaretz.co.il@0.0.0 -> react-apollo@^2.4.1 -> hoist-non-react-statics@^3.0.0
      * Duplicated files in static/chunks/commons.b98963a347d35c8a1d80.js
        hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js (S, 2887)

prop-types (Found 2 resolved, 2 installed, 22 depended. Latest 15.7.2.)
  15.6.2
    ../../../~/prop-types
      * Dependency graph
        @haaretz/haaretz.co.il@0.0.0 -> prop-types@^15.6.1
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/fela-utils@^0.1.0 -> prop-types@^15.6.1
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/fela-utils@^0.1.0 -> react-test-renderer@^16.8.2 -> prop-types@^15.6.2
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> prop-types@^15.6.1
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> @haaretz/fela-utils@^0.1.0 -> prop-types@^15.6.1
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> @haaretz/fela-utils@^0.1.0 -> react-test-renderer@^16.8.2 -> prop-types@^15.6.2
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> react-fns@^1.4.0 -> react-media@^1.6.1 -> prop-types@^15.5.10
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> react-focus-lock@^1.8.1 -> prop-types@^15.6.2
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> react-media@^1.8.0 -> prop-types@^15.5.10
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> react-test-renderer@^16.8.2 -> prop-types@^15.6.2
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-theme@^0.1.0 -> prop-types@^15.6.1
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-theme@^0.1.0 -> @haaretz/fela-utils@^0.1.0 -> prop-types@^15.6.1
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-theme@^0.1.0 -> @haaretz/fela-utils@^0.1.0 -> react-test-renderer@^16.8.2 -> prop-types@^15.6.2
        @haaretz/haaretz.co.il@0.0.0 -> next@^8.0.1 -> prop-types@15.6.2
        @haaretz/haaretz.co.il@0.0.0 -> next@^8.0.1 -> next-server@8.0.1 -> prop-types@15.6.2
        @haaretz/haaretz.co.il@0.0.0 -> react-dom@^16.8.2 -> prop-types@^15.6.2
        @haaretz/haaretz.co.il@0.0.0 -> react-fela@^7.2.0 -> prop-types@^15.5.8
        @haaretz/haaretz.co.il@0.0.0 -> react@^16.8.2 -> prop-types@^15.6.2
        @haaretz/htz-react-base@1.1.0 -> react-dom@^16.8.2 -> prop-types@^15.6.2
        @haaretz/htz-react-base@1.1.0 -> react-test-renderer@^16.8.2 -> prop-types@^15.6.2
        @haaretz/htz-react-base@1.1.0 -> react@^16.8.2 -> prop-types@^15.6.2
      * Duplicated files in static/chunks/commons.b98963a347d35c8a1d80.js
        prop-types/factoryWithThrowingShims.js (S, 1469)
        prop-types/index.js (S, 956)
        prop-types/lib/ReactPropTypesSecret.js (I, 314)
        prop-types/factoryWithThrowingShims.js (S, 1469)
        prop-types/index.js (S, 956)
        prop-types/lib/ReactPropTypesSecret.js (I, 314)

  15.7.2
    ../../../~/react-apollo/~/prop-types
      * Dependency graph
        @haaretz/haaretz.co.il@0.0.0 -> react-apollo@^2.4.1 -> prop-types@^15.6.0
      * Duplicated files in static/chunks/commons.b98963a347d35c8a1d80.js
        prop-types/factoryWithThrowingShims.js (S, 1621)
        prop-types/index.js (S, 710)
        prop-types/lib/ReactPropTypesSecret.js (I, 314)

* Understanding the report: Need help with the details? See:
  https://github.com/FormidableLabs/inspectpack/#diagnosing-duplicates
* Fixing bundle duplicates: An introductory guide:
  https://github.com/FormidableLabs/inspectpack/#fixing-bundle-duplicates
ryan-roemer commented 5 years ago

OK, now updated... I think I've got everything correctly matched up with what the simple duplicates report has.

side note: It is fascinating to see what all the fela-monorepo released stuff ends up with dependency-wise, but looks like modulo a few duplicates, the lerna package release keeps things pinned so we have a ton of logical dependencies from the abstract dependency tree, but only a handful of actual on-disk installations...

Error: Duplicate Sources / Packages - Duplicates found! ⚠️

* Duplicates: Found 10 similar files across 12 code sources (both identical + similar)
  accounting for 15019 bundled bytes.
* Packages: Found 4 packages with 8 resolved, 9 installed, and 89 depended versions.

## static/chunks/commons.b98963a347d35c8a1d80.js
css-in-js-utils (Found 2 resolved, 3 installed, 60 depended. Latest 3.0.0.)
  2.0.1
    ../../../~/fela-dom/~/css-in-js-utils
      * Dependency graph
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> fela-dom@^7.0.9 -> css-in-js-utils@^2.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> fela-dom@^7.0.9 -> css-in-js-utils@^2.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> fela-dom@^7.0.7 -> css-in-js-utils@^2.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-theme@^0.1.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> fela-dom@^7.0.9 -> css-in-js-utils@^2.0.0
        @haaretz/haaretz.co.il@0.0.0 -> react-fela@^7.2.0 -> fela-bindings@^2.3.1 -> fela-dom@^7.0.9 -> css-in-js-utils@^2.0.0
        @haaretz/haaretz.co.il@0.0.0 -> react-fela@^7.2.0 -> fela-dom@^7.0.9 -> css-in-js-utils@^2.0.0
      * Duplicated files in static/chunks/commons.b98963a347d35c8a1d80.js

    ../../../~/inline-style-prefixer/~/css-in-js-utils
      * Dependency graph
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/fela-utils@^0.1.0 -> inline-style-prefixer@^5.0.3 -> css-in-js-utils@^2.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> @haaretz/fela-utils@^0.1.0 -> inline-style-prefixer@^5.0.3 -> css-in-js-utils@^2.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-theme@^0.1.0 -> @haaretz/fela-utils@^0.1.0 -> inline-style-prefixer@^5.0.3 -> css-in-js-utils@^2.0.0
      * Duplicated files in static/chunks/commons.b98963a347d35c8a1d80.js
        css-in-js-utils/lib/hyphenateProperty.js (I, 479)

  3.0.0
    ../../../~/css-in-js-utils
      * Dependency graph
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> fela-dom@^7.0.9 -> fela-utils@^8.0.8 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> fela-tools@^5.1.7 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> fela-tools@^5.1.7 -> fela-utils@^8.1.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> fela-tools@^5.1.7 -> fela@^6.2.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> fela-tools@^5.1.7 -> fela@^6.2.3 -> fela-utils@^8.1.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/fela-utils@^0.1.0 -> fela-plugin-extend@^6.0.11 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/fela-utils@^0.1.0 -> fela-plugin-extend@^6.0.11 -> fela-utils@^8.1.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/fela-utils@^0.1.0 -> fela-plugin-fallback-value@^5.0.17 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/fela-utils@^0.1.0 -> fela-plugin-placeholder-prefixer@^5.0.18 -> fela-plugin-custom-property@^7.0.5 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/fela-utils@^0.1.0 -> fela-plugin-unit@^5.0.16 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/fela-utils@^0.1.0 -> fela-tools@^5.1.5 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/fela-utils@^0.1.0 -> fela-tools@^5.1.5 -> fela-utils@^8.1.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/fela-utils@^0.1.0 -> fela-tools@^5.1.5 -> fela@^6.2.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/fela-utils@^0.1.0 -> fela-tools@^5.1.5 -> fela@^6.2.3 -> fela-utils@^8.1.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> fela-dom@^7.0.9 -> fela-utils@^8.0.8 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> fela-tools@^5.1.7 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> fela-tools@^5.1.7 -> fela-utils@^8.1.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> fela-tools@^5.1.7 -> fela@^6.2.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> fela-tools@^5.1.7 -> fela@^6.2.3 -> fela-utils@^8.1.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> @haaretz/fela-utils@^0.1.0 -> fela-plugin-extend@^6.0.11 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> @haaretz/fela-utils@^0.1.0 -> fela-plugin-extend@^6.0.11 -> fela-utils@^8.1.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> @haaretz/fela-utils@^0.1.0 -> fela-plugin-fallback-value@^5.0.17 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> @haaretz/fela-utils@^0.1.0 -> fela-plugin-placeholder-prefixer@^5.0.18 -> fela-plugin-custom-property@^7.0.5 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> @haaretz/fela-utils@^0.1.0 -> fela-plugin-unit@^5.0.16 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> @haaretz/fela-utils@^0.1.0 -> fela-tools@^5.1.5 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> @haaretz/fela-utils@^0.1.0 -> fela-tools@^5.1.5 -> fela-utils@^8.1.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> @haaretz/fela-utils@^0.1.0 -> fela-tools@^5.1.5 -> fela@^6.2.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> @haaretz/fela-utils@^0.1.0 -> fela-tools@^5.1.5 -> fela@^6.2.3 -> fela-utils@^8.1.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> fela-dom@^7.0.7 -> fela-utils@^8.0.8 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-theme@^0.1.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> fela-dom@^7.0.9 -> fela-utils@^8.0.8 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-theme@^0.1.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> fela-tools@^5.1.7 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-theme@^0.1.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> fela-tools@^5.1.7 -> fela-utils@^8.1.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-theme@^0.1.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> fela-tools@^5.1.7 -> fela@^6.2.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-theme@^0.1.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> fela-tools@^5.1.7 -> fela@^6.2.3 -> fela-utils@^8.1.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-theme@^0.1.0 -> @haaretz/fela-utils@^0.1.0 -> fela-plugin-extend@^6.0.11 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-theme@^0.1.0 -> @haaretz/fela-utils@^0.1.0 -> fela-plugin-extend@^6.0.11 -> fela-utils@^8.1.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-theme@^0.1.0 -> @haaretz/fela-utils@^0.1.0 -> fela-plugin-fallback-value@^5.0.17 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-theme@^0.1.0 -> @haaretz/fela-utils@^0.1.0 -> fela-plugin-placeholder-prefixer@^5.0.18 -> fela-plugin-custom-property@^7.0.5 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-theme@^0.1.0 -> @haaretz/fela-utils@^0.1.0 -> fela-plugin-unit@^5.0.16 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-theme@^0.1.0 -> @haaretz/fela-utils@^0.1.0 -> fela-tools@^5.1.5 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-theme@^0.1.0 -> @haaretz/fela-utils@^0.1.0 -> fela-tools@^5.1.5 -> fela-utils@^8.1.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-theme@^0.1.0 -> @haaretz/fela-utils@^0.1.0 -> fela-tools@^5.1.5 -> fela@^6.2.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-theme@^0.1.0 -> @haaretz/fela-utils@^0.1.0 -> fela-tools@^5.1.5 -> fela@^6.2.3 -> fela-utils@^8.1.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> fela@^6.1.7 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> fela@^6.1.7 -> fela-utils@^8.1.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> react-fela@^7.2.0 -> fela-bindings@^2.3.1 -> fela-dom@^7.0.9 -> fela-utils@^8.0.8 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> react-fela@^7.2.0 -> fela-bindings@^2.3.1 -> fela-tools@^5.1.7 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> react-fela@^7.2.0 -> fela-bindings@^2.3.1 -> fela-tools@^5.1.7 -> fela-utils@^8.1.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> react-fela@^7.2.0 -> fela-bindings@^2.3.1 -> fela-tools@^5.1.7 -> fela@^6.2.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> react-fela@^7.2.0 -> fela-bindings@^2.3.1 -> fela-tools@^5.1.7 -> fela@^6.2.3 -> fela-utils@^8.1.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz.co.il@0.0.0 -> react-fela@^7.2.0 -> fela-dom@^7.0.9 -> fela-utils@^8.0.8 -> css-in-js-utils@^3.0.0
      * Duplicated files in static/chunks/commons.b98963a347d35c8a1d80.js
        css-in-js-utils/lib/hyphenateProperty.js (I, 479)

fbjs (Found 2 resolved, 2 installed, 5 depended. Latest 1.0.0.)
  0.8.17
    ../../../~/react-addons-shallow-compare/~/fbjs
      * Dependency graph
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> react-addons-shallow-compare@^15.6.2 -> fbjs@^0.8.4
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> react-addons-shallow-compare@^15.6.2 -> fbjs@^0.8.4
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-theme@^0.1.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> react-addons-shallow-compare@^15.6.2 -> fbjs@^0.8.4
        @haaretz/haaretz.co.il@0.0.0 -> react-fela@^7.2.0 -> fela-bindings@^2.3.1 -> react-addons-shallow-compare@^15.6.2 -> fbjs@^0.8.4
      * Duplicated files in static/chunks/commons.b98963a347d35c8a1d80.js
        fbjs/lib/shallowEqual.js (S, 1616)

  1.0.0
    ../../../~/fbjs
      * Dependency graph
        @haaretz/haaretz.co.il@0.0.0 -> react-apollo@^2.4.1 -> fbjs@^1.0.0
      * Duplicated files in static/chunks/commons.b98963a347d35c8a1d80.js
        fbjs/lib/shallowEqual.js (S, 1615)

hoist-non-react-statics (Found 2 resolved, 2 installed, 2 depended. Latest 3.3.0.)
  3.2.0
    ../../../~/hoist-non-react-statics
      * Dependency graph
        @haaretz/haaretz.co.il@0.0.0 -> next@^8.0.1 -> hoist-non-react-statics@3.2.0
      * Duplicated files in static/chunks/commons.b98963a347d35c8a1d80.js
        hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js (S, 2559)

  3.3.0
    ../../../~/react-apollo/~/hoist-non-react-statics
      * Dependency graph
        @haaretz/haaretz.co.il@0.0.0 -> react-apollo@^2.4.1 -> hoist-non-react-statics@^3.0.0
      * Duplicated files in static/chunks/commons.b98963a347d35c8a1d80.js
        hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js (S, 2887)

prop-types (Found 2 resolved, 2 installed, 22 depended. Latest 15.7.2.)
  15.6.2
    ../../../~/prop-types
      * Dependency graph
        @haaretz/haaretz.co.il@0.0.0 -> prop-types@^15.6.1
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/fela-utils@^0.1.0 -> prop-types@^15.6.1
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/fela-utils@^0.1.0 -> react-test-renderer@^16.8.2 -> prop-types@^15.6.2
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> prop-types@^15.6.1
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> @haaretz/fela-utils@^0.1.0 -> prop-types@^15.6.1
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> @haaretz/fela-utils@^0.1.0 -> react-test-renderer@^16.8.2 -> prop-types@^15.6.2
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> react-fns@^1.4.0 -> react-media@^1.6.1 -> prop-types@^15.5.10
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> react-focus-lock@^1.8.1 -> prop-types@^15.6.2
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> react-media@^1.8.0 -> prop-types@^15.5.10
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> react-test-renderer@^16.8.2 -> prop-types@^15.6.2
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-theme@^0.1.0 -> prop-types@^15.6.1
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-theme@^0.1.0 -> @haaretz/fela-utils@^0.1.0 -> prop-types@^15.6.1
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-theme@^0.1.0 -> @haaretz/fela-utils@^0.1.0 -> react-test-renderer@^16.8.2 -> prop-types@^15.6.2
        @haaretz/haaretz.co.il@0.0.0 -> next@^8.0.1 -> prop-types@15.6.2
        @haaretz/haaretz.co.il@0.0.0 -> next@^8.0.1 -> next-server@8.0.1 -> prop-types@15.6.2
        @haaretz/haaretz.co.il@0.0.0 -> react-dom@^16.8.2 -> prop-types@^15.6.2
        @haaretz/haaretz.co.il@0.0.0 -> react-fela@^7.2.0 -> prop-types@^15.5.8
        @haaretz/haaretz.co.il@0.0.0 -> react@^16.8.2 -> prop-types@^15.6.2
        @haaretz/htz-react-base@1.1.0 -> react-dom@^16.8.2 -> prop-types@^15.6.2
        @haaretz/htz-react-base@1.1.0 -> react-test-renderer@^16.8.2 -> prop-types@^15.6.2
        @haaretz/htz-react-base@1.1.0 -> react@^16.8.2 -> prop-types@^15.6.2
      * Duplicated files in static/chunks/commons.b98963a347d35c8a1d80.js
        prop-types/factoryWithThrowingShims.js (S, 1469)
        prop-types/index.js (S, 956)
        prop-types/lib/ReactPropTypesSecret.js (I, 314)

  15.7.2
    ../../../~/react-apollo/~/prop-types
      * Dependency graph
        @haaretz/haaretz.co.il@0.0.0 -> react-apollo@^2.4.1 -> prop-types@^15.6.0
      * Duplicated files in static/chunks/commons.b98963a347d35c8a1d80.js
        prop-types/factoryWithThrowingShims.js (S, 1621)
        prop-types/index.js (S, 710)
        prop-types/lib/ReactPropTypesSecret.js (I, 314)

* Understanding the report: Need help with the details? See:
  https://github.com/FormidableLabs/inspectpack/#diagnosing-duplicates
* Fixing bundle duplicates: An introductory guide:
  https://github.com/FormidableLabs/inspectpack/#fixing-bundle-duplicates
ryan-roemer commented 5 years ago

Oh, and @TxHawks , unrelated tip: Remove

emitHandler: report => console.log(report),

from the options. It looks like modern next does correctly capture compilation warnings / errors at the end, while anything that goes to console (like the above setting) spams the terminal competing with the terminal-based progress bars 😉

ryan-roemer commented 5 years ago

@TxHawks @Mefu -- I think https://github.com/FormidableLabs/inspectpack/pull/107 is in final shape and should at least address @TxHawks issues. (@Mefu I may need a separate reproduction if the branch doesn't solve your issues).

I plan to release this tomorrow, so any early feedback is most welcome! (And thanks again for your patience -- solving this required some very deep dives to keep everything efficient I/O-wise...)

TxHawks commented 5 years ago

Thank you so much @ryan-roemer! I fully understand how much work this has been since I tried to take a stab at it before realizeing it will be way more work than I am able to put in at the moment.

I checked the the bug/hidden-app-roots-v2 branch and it indeed seems to work , though there is one issue, which might just be me misunderstanding the report. There were no duplicates found in the server bundles and duplicates were reported in the client bundle.

The client report includes the following:

## static/chunks/commons.afb167054d4db523cce5.js
css-in-js-utils (Found 2 resolved, 3 installed, 60 depended. Latest 3.0.0.)
  2.0.1 ~/fela-dom/~/css-in-js-utils
    @haaretz/haaretz.co.il@0.0.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> fela-dom@^7.0.9 -> css-in-js-utils@^2.0.0
    @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> fela-dom@^7.0.9 -> css-in-js-utils@^2.0.0
    @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> fela-dom@^7.0.7 -> css-in-js-utils@^2.0.0
    @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-theme@^0.1.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> fela-dom@^7.0.9 -> css-in-js-utils@^2.0.0
    @haaretz/haaretz.co.il@0.0.0 -> react-fela@^7.2.0 -> fela-bindings@^2.3.1 -> fela-dom@^7.0.9 -> css-in-js-utils@^2.0.0
    @haaretz/haaretz.co.il@0.0.0 -> react-fela@^7.2.0 -> fela-dom@^7.0.9 -> css-in-js-utils@^2.0.0
  2.0.1 ~/inline-style-prefixer/~/css-in-js-utils
    @haaretz/haaretz.co.il@0.0.0 -> @haaretz/fela-utils@^0.1.0 -> inline-style-prefixer@^5.0.3 -> css-in-js-utils@^2.0.0
    @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-components@^0.2.0 -> @haaretz/fela-utils@^0.1.0 -> inline-style-prefixer@^5.0.3 -> css-in-js-utils@^2.0.0
    @haaretz/haaretz.co.il@0.0.0 -> @haaretz/htz-theme@^0.1.0 -> @haaretz/fela-utils@^0.1.0 -> inline-style-prefixer@^5.0.3 -> css-in-js-utils@^2.0.0
  3.0.0 ~/css-in-js-utils
    @haaretz/haaretz.co.il@0.0.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> fela-dom@^7.0.9 -> fela-utils@^8.0.8 -> css-in-js-utils@^3.0.0
    @haaretz/haaretz.co.il@0.0.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> fela-tools@^5.1.7 -> css-in-js-utils@^3.0.0
# Report continues...

s you can see, there are two separate branches of css-in-js-utils version 2.0.1, which seems wrong, unless I misunderstand something.

Thanks again for putting so much work into solving this

ryan-roemer commented 5 years ago

Deciphering the report a bit: (Found 2 resolved, 3 installed, 60 depended. Latest 3.0.0.) means:

The operative thing is:

2.0.1 ~/fela-dom/~/css-in-js-utils
2.0.1 ~/inline-style-prefixer/~/css-in-js-utils
3.0.0 ~/css-in-js-utils

which translates to "on disk" installs, so:

$ cat node_modules/fela-dom/node_modules/css-in-js-utils/package.json | grep version
    "version": "2.0.1",
$ cat node_modules/inline-style-prefixer/node_modules/css-in-js-utils/package.json | grep version
    "version": "2.0.1",
$ cat node_modules/css-in-js-utils/package.json | grep version
  "version": "3.0.0",

What you're seeing is that because 3.0.0 is flattened to the root of node_modules, you have two separate on-disk installs of 2.0.1 that can't be flattened further.

However, if you do the verbose report, there are only duplicate files for the second ~/inline-style-prefixer/~/css-in-js-utils 2.0.1 and ~/css-in-js-utils 3.0.0 for the file css-in-js-utils/lib/hyphenateProperty.js.

The first ~/fela-dom/~/css-in-js-utils 2.0.1 doesn't actually have a module that ended up in the bundle, but it does matter for overall dependency resolution because of flattening requirements.

Hope that helps!

TxHawks commented 5 years ago

Yes, that does help. Thanks.

However, if you do the verbose report...

You mean passing verbose: true to the plugin? Because that's what I did

ryan-roemer commented 5 years ago

Cool! For verbose, I think I just was confused by the manual editing of the report output (and I've got a ticket #109 to collapse large amounts of dependency graphs for easier reading in the future). Here's what I see and I'm guessing that matches up with you:

## static/chunks/commons.b98963a347d35c8a1d80.js
css-in-js-utils (Found 2 resolved, 3 installed, 60 depended. Latest 3.0.0.)
  2.0.1
    ~/fela-dom/~/css-in-js-utils
      * Dependency graph
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> fela-dom@^7.0.9 -> css-in-js-utils@^2.0.0
        # ... SNIPPED LOTS OF DEP TREES ...
        @haaretz/haaretz.co.il@0.0.0 -> react-fela@^7.2.0 -> fela-dom@^7.0.9 -> css-in-js-utils@^2.0.0
      * Duplicated files in static/chunks/commons.b98963a347d35c8a1d80.js

    ~/inline-style-prefixer/~/css-in-js-utils
      * Dependency graph
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/fela-utils@^0.1.0 -> inline-style-prefixer@^5.0.3 -> css-in-js-utils@^2.0.0
        # ... SNIPPED LOTS OF DEP TREES ...
        @haaretz/fela-utils@^0.1.0 -> inline-style-prefixer@^5.0.3 -> css-in-js-utils@^2.0.0
      * Duplicated files in static/chunks/commons.b98963a347d35c8a1d80.js
        css-in-js-utils/lib/hyphenateProperty.js (I, 479)

  3.0.0
    ~/css-in-js-utils
      * Dependency graph
        @haaretz/haaretz.co.il@0.0.0 -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> fela-dom@^7.0.9 -> fela-utils@^8.0.8 -> css-in-js-utils@^3.0.0
        # ... SNIPPED LOTS OF DEP TREES ...
        @haaretz/haaretz.co.il@0.0.0 -> react-fela@^7.2.0 -> fela-dom@^7.0.9 -> fela-utils@^8.0.8 -> css-in-js-utils@^3.0.0
      * Duplicated files in static/chunks/commons.b98963a347d35c8a1d80.js
        css-in-js-utils/lib/hyphenateProperty.js (I, 479)