Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
TxHawks opened this issue Feb 23, 2019 · 36 comments · Fixed by #107
Closed

Comments

@TxHawks
Copy link

TxHawks commented Feb 23, 2019

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
Copy link
Member

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
Copy link
Member

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
Copy link
Member

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
Copy link
Author

TxHawks commented Feb 23, 2019

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
Copy link
Author

TxHawks commented Feb 23, 2019

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
Copy link
Member

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
Copy link
Author

TxHawks commented Feb 23, 2019

After which step?

@ryan-roemer
Copy link
Member

yarn workspace @haaretz/haaretz.co.il build

@ryan-roemer
Copy link
Member

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
Copy link
Author

TxHawks commented Feb 23, 2019

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
Copy link
Author

TxHawks commented Feb 23, 2019

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
Copy link
Author

TxHawks commented Feb 23, 2019

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
Copy link
Member

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/[email protected]/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
Copy link
Author

TxHawks commented Feb 24, 2019

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

@ryan-roemer
Copy link
Member

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
Copy link
Member

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
Copy link
Author

TxHawks commented Feb 24, 2019

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
Copy link
Member

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
Copy link
Author

TxHawks commented Feb 24, 2019

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

@TxHawks
Copy link
Author

TxHawks commented Feb 26, 2019

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

@ryan-roemer
Copy link
Member

ryan-roemer commented Feb 26, 2019

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 ryan-roemer changed the title Report only partially printed in Next Js app [BUG] Application roots without node_modules on disk are missed for versions inference. Feb 26, 2019
@ryan-roemer
Copy link
Member

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.

#104

@mefu
Copy link

mefu commented Mar 4, 2019

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
Copy link
Member

ryan-roemer commented Mar 18, 2019

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: #104

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

@ryan-roemer
Copy link
Member

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
        [email protected] -> [email protected]
      * 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
        [email protected] -> [email protected]
        [email protected] -> [email protected] -> [email protected]
      * 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
Copy link
Author

TxHawks commented Mar 19, 2019

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
Copy link
Member

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

@ryan-roemer
Copy link
Member

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

@ryan-roemer
Copy link
Member

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[email protected] -> @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[email protected] -> @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[email protected] -> @haaretz/htz-components@^0.2.0 -> fela-dom@^7.0.7 -> css-in-js-utils@^2.0.0
        @haaretz/haaretz[email protected] -> @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[email protected] -> react-fela@^7.2.0 -> fela-bindings@^2.3.1 -> fela-dom@^7.0.9 -> css-in-js-utils@^2.0.0
        @haaretz/haaretz[email protected] -> 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/[email protected] -> @haaretz/fela-utils@^0.1.0 -> inline-style-prefixer@^5.0.3 -> css-in-js-utils@^2.0.0
        @haaretz/[email protected] -> @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/[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @haaretz/fela-utils@^0.1.0 -> fela-plugin-extend@^6.0.11 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz[email protected] -> @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[email protected] -> @haaretz/fela-utils@^0.1.0 -> fela-plugin-fallback-value@^5.0.17 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz[email protected] -> @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[email protected] -> @haaretz/fela-utils@^0.1.0 -> fela-plugin-unit@^5.0.16 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz[email protected] -> @haaretz/fela-utils@^0.1.0 -> fela-tools@^5.1.5 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz[email protected] -> @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[email protected] -> @haaretz/fela-utils@^0.1.0 -> fela-tools@^5.1.5 -> fela@^6.2.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> fela@^6.1.7 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz[email protected] -> fela@^6.1.7 -> fela-utils@^8.1.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz[email protected] -> 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[email protected] -> react-fela@^7.2.0 -> fela-bindings@^2.3.1 -> fela-tools@^5.1.7 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz[email protected] -> 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[email protected] -> 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[email protected] -> 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[email protected] -> 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[email protected] -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> react-addons-shallow-compare@^15.6.2 -> fbjs@^0.8.4
        @haaretz/haaretz[email protected] -> @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[email protected] -> @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[email protected] -> 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[email protected] -> 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[email protected] -> next@^8.0.1 -> [email protected]
      * 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[email protected] -> 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[email protected] -> prop-types@^15.6.1
        @haaretz/haaretz[email protected] -> @haaretz/fela-utils@^0.1.0 -> prop-types@^15.6.1
        @haaretz/haaretz[email protected] -> @haaretz/fela-utils@^0.1.0 -> react-test-renderer@^16.8.2 -> prop-types@^15.6.2
        @haaretz/haaretz[email protected] -> @haaretz/htz-components@^0.2.0 -> prop-types@^15.6.1
        @haaretz/haaretz[email protected] -> @haaretz/htz-components@^0.2.0 -> @haaretz/fela-utils@^0.1.0 -> prop-types@^15.6.1
        @haaretz/haaretz[email protected] -> @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[email protected] -> @haaretz/htz-components@^0.2.0 -> react-fns@^1.4.0 -> react-media@^1.6.1 -> prop-types@^15.5.10
        @haaretz/haaretz[email protected] -> @haaretz/htz-components@^0.2.0 -> react-focus-lock@^1.8.1 -> prop-types@^15.6.2
        @haaretz/haaretz[email protected] -> @haaretz/htz-components@^0.2.0 -> react-media@^1.8.0 -> prop-types@^15.5.10
        @haaretz/haaretz[email protected] -> @haaretz/htz-components@^0.2.0 -> react-test-renderer@^16.8.2 -> prop-types@^15.6.2
        @haaretz/haaretz[email protected] -> @haaretz/htz-theme@^0.1.0 -> prop-types@^15.6.1
        @haaretz/haaretz[email protected] -> @haaretz/htz-theme@^0.1.0 -> @haaretz/fela-utils@^0.1.0 -> prop-types@^15.6.1
        @haaretz/haaretz[email protected] -> @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[email protected] -> next@^8.0.1 -> [email protected]
        @haaretz/haaretz[email protected] -> next@^8.0.1 -> [email protected] -> [email protected]
        @haaretz/haaretz[email protected] -> react-dom@^16.8.2 -> prop-types@^15.6.2
        @haaretz/haaretz[email protected] -> react-fela@^7.2.0 -> prop-types@^15.5.8
        @haaretz/haaretz[email protected] -> 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[email protected] -> 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
Copy link
Member

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[email protected] -> @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[email protected] -> @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[email protected] -> @haaretz/htz-components@^0.2.0 -> fela-dom@^7.0.7 -> css-in-js-utils@^2.0.0
        @haaretz/haaretz[email protected] -> @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[email protected] -> react-fela@^7.2.0 -> fela-bindings@^2.3.1 -> fela-dom@^7.0.9 -> css-in-js-utils@^2.0.0
        @haaretz/haaretz[email protected] -> 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/[email protected] -> @haaretz/fela-utils@^0.1.0 -> inline-style-prefixer@^5.0.3 -> css-in-js-utils@^2.0.0
        @haaretz/[email protected] -> @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/[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @haaretz/fela-utils@^0.1.0 -> fela-plugin-extend@^6.0.11 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz[email protected] -> @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[email protected] -> @haaretz/fela-utils@^0.1.0 -> fela-plugin-fallback-value@^5.0.17 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz[email protected] -> @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[email protected] -> @haaretz/fela-utils@^0.1.0 -> fela-plugin-unit@^5.0.16 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz[email protected] -> @haaretz/fela-utils@^0.1.0 -> fela-tools@^5.1.5 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz[email protected] -> @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[email protected] -> @haaretz/fela-utils@^0.1.0 -> fela-tools@^5.1.5 -> fela@^6.2.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> @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[email protected] -> fela@^6.1.7 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz[email protected] -> fela@^6.1.7 -> fela-utils@^8.1.3 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz[email protected] -> 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[email protected] -> react-fela@^7.2.0 -> fela-bindings@^2.3.1 -> fela-tools@^5.1.7 -> css-in-js-utils@^3.0.0
        @haaretz/haaretz[email protected] -> 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[email protected] -> 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[email protected] -> 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[email protected] -> 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[email protected] -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> react-addons-shallow-compare@^15.6.2 -> fbjs@^0.8.4
        @haaretz/haaretz[email protected] -> @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[email protected] -> @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[email protected] -> 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[email protected] -> 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[email protected] -> next@^8.0.1 -> [email protected]
      * 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[email protected] -> 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[email protected] -> prop-types@^15.6.1
        @haaretz/haaretz[email protected] -> @haaretz/fela-utils@^0.1.0 -> prop-types@^15.6.1
        @haaretz/haaretz[email protected] -> @haaretz/fela-utils@^0.1.0 -> react-test-renderer@^16.8.2 -> prop-types@^15.6.2
        @haaretz/haaretz[email protected] -> @haaretz/htz-components@^0.2.0 -> prop-types@^15.6.1
        @haaretz/haaretz[email protected] -> @haaretz/htz-components@^0.2.0 -> @haaretz/fela-utils@^0.1.0 -> prop-types@^15.6.1
        @haaretz/haaretz[email protected] -> @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[email protected] -> @haaretz/htz-components@^0.2.0 -> react-fns@^1.4.0 -> react-media@^1.6.1 -> prop-types@^15.5.10
        @haaretz/haaretz[email protected] -> @haaretz/htz-components@^0.2.0 -> react-focus-lock@^1.8.1 -> prop-types@^15.6.2
        @haaretz/haaretz[email protected] -> @haaretz/htz-components@^0.2.0 -> react-media@^1.8.0 -> prop-types@^15.5.10
        @haaretz/haaretz[email protected] -> @haaretz/htz-components@^0.2.0 -> react-test-renderer@^16.8.2 -> prop-types@^15.6.2
        @haaretz/haaretz[email protected] -> @haaretz/htz-theme@^0.1.0 -> prop-types@^15.6.1
        @haaretz/haaretz[email protected] -> @haaretz/htz-theme@^0.1.0 -> @haaretz/fela-utils@^0.1.0 -> prop-types@^15.6.1
        @haaretz/haaretz[email protected] -> @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[email protected] -> next@^8.0.1 -> [email protected]
        @haaretz/haaretz[email protected] -> next@^8.0.1 -> [email protected] -> [email protected]
        @haaretz/haaretz[email protected] -> react-dom@^16.8.2 -> prop-types@^15.6.2
        @haaretz/haaretz[email protected] -> react-fela@^7.2.0 -> prop-types@^15.5.8
        @haaretz/haaretz[email protected] -> 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[email protected] -> 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
Copy link
Member

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
Copy link
Member

@TxHawks @mefu -- I think #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
Copy link
Author

TxHawks commented Mar 26, 2019

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/[email protected] -> @haaretz/fela-utils@^0.1.0 -> fela-bindings@^2.2.0 -> fela-dom@^7.0.9 -> css-in-js-utils@^2.0.0
    @haaretz/[email protected] -> @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/[email protected] -> @haaretz/htz-components@^0.2.0 -> fela-dom@^7.0.7 -> css-in-js-utils@^2.0.0
    @haaretz/[email protected] -> @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/[email protected] -> react-fela@^7.2.0 -> fela-bindings@^2.3.1 -> fela-dom@^7.0.9 -> css-in-js-utils@^2.0.0
    @haaretz/[email protected] -> 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/[email protected] -> @haaretz/fela-utils@^0.1.0 -> inline-style-prefixer@^5.0.3 -> css-in-js-utils@^2.0.0
    @haaretz/[email protected] -> @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/[email protected] -> @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/[email protected] -> @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/[email protected] -> @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
Copy link
Member

ryan-roemer commented Mar 26, 2019

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

  • 2 versions were resolved (2.0.1, 3.0.0)
  • 3 packages were installed for those 2 versions.
  • 60 dependency paths led to this package.

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
Copy link
Author

TxHawks commented Mar 26, 2019

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
Copy link
Member

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[email protected] -> @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[email protected] -> 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/[email protected] -> @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[email protected] -> @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[email protected] -> 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)

ryan-roemer added a commit that referenced this issue Mar 26, 2019
* Add `commonRoot` to `versions` metadata to indicate what installed paths are relative to.
* BUG: Detect hidden application roots for things like `yarn` workspaces that are completely flattened.
  [#103](#103)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
3 participants