Open ryan-roemer opened 5 years ago
If I understand multiple-roots
well it consists in running yarn install
in three different folders and running Webpack, is that correct? If so, then it doesn't seem the best fit for PnP 🙂
PnP needs (by design) to know everything about the dependency tree. When a file makes a require call, PnP will be able to finds which package that makes the require based on its path on the filesystem (this part can be made with multiple roots) and then deduces the dependencies for this package. This part cannot work with multiple roots, because there would be no way for us to know to which versions have the dependencies been locked.
@arcanis -- the multiple-roots
scenario is meant to approximate what happens with monorepos that also directly create webpack bundles. Inspectpack doesn't specifically "handle" multiple roots, it just infers roots from the full paths of included assets that could potentially be a root.
You know, I haven't had a chance to kick the tires on PnP. I'll do that when I get a moment, but if you have a second, what does the on-disk layout look like for a simple install (like say two dependencies or something)? (Doesn't really matter if the root is in or outside of where the webpack build is...)
the multiple-roots scenario is meant to approximate what happens with monorepos that also directly create webpack bundles. Inspectpack doesn't specifically "handle" multiple roots,
I see - I guess you'd want to use workspaces then! This way the two packages will become part of the dependency tree and all will be well 🙂
what does the on-disk layout look like for a simple install (like say two dependencies or something)?
On-disk it will look like this:
/home/arcanis/.local/yarn/cache/v3/package-a-1.0.0/node_modules/package-a/package.json
/home/arcanis/.local/yarn/cache/v3/package-b-1.0.0/node_modules/package-b/package.json
/home/arcanis/project/package.json
/home/arcanis/project/.pnp.js
And the content of .pnp.js
will be similar to this, semantically:
"/home/arcanis/.local/yarn/cache/v3/package-a-1.0.0/node_modules/package-a" is package-a@1.0.0
"/home/arcanis/.local/yarn/cache/v3/package-a-1.0.0/node_modules/package-b" is package-b@1.0.0
the top-level project depends on package-a@1.0.0
package-a@1.0.0 depends on package-b@1.0.0
Doesn't really matter if the root is in or outside of where the webpack build is...
Fwiw the cache is by default outside (so as to be mutualized across multiple projects), but that can be configured.
I pulled https://github.com/yarnpkg/pnp-sample-app, then did this:
diff --git a/package.json b/package.json
index e390cfb..c15872c 100644
--- a/package.json
+++ b/package.json
@@ -28,6 +28,7 @@
"gulp-uglify": "^3.0.0",
"html-webpack-plugin": "^3.1.0",
"http-server": "^0.11.1",
+ "inspectpack": "^4.0.0",
"jest": "^23.4.0",
"jest-environment-jsdom": "^23.4.0",
"jest-pnp-resolver": "^1.0.0",
diff --git a/webpack.config.js b/webpack.config.js
index 817095e..e3f9b5e 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -1,6 +1,7 @@
const HtmlWebpackPlugin = require(`html-webpack-plugin`);
const PnpWebpackPlugin = require(`pnp-webpack-plugin`);
const WebpackAnalyzerPlugin = require(`webpack-bundle-analyzer`).BundleAnalyzerPlugin;
+const { DuplicatesPlugin } = require(`inspectpack/plugin`);
module.exports = {
@@ -12,6 +13,7 @@ module.exports = {
output: {
filename: `[name].js`,
+ pathinfo: true,
},
@@ -38,6 +40,7 @@ module.exports = {
plugins: [
new HtmlWebpackPlugin(),
+ new DuplicatesPlugin(),
// new WebpackAnalyzerPlugin(),
]
(added pathinfo just to see where stuff is) and got this report:
Duplicate Sources / Packages - No duplicates found. 🚀
I added some console.logs to inspectpack's source to see what it inferred as the roots and got:
TODO HERE pkgRoots [
"/Users/rye/Library/Caches/Yarn/v3/npm-babel-loader-7.1.4-e3463938bd4e6d55d1c174c5485d406a188ed015",
"/Users/rye/Library/Caches/Yarn/v3/npm-babel-runtime-6.26.0-965c7058668e82b55d7bfe04ff2337bc8b5647fe",
"/Users/rye/Library/Caches/Yarn/v3/npm-core-decorators-0.20.0-605896624053af8c28efbe735c25a301a61c65c5",
"/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b",
"/Users/rye/Library/Caches/Yarn/v3/npm-fbjs-0.8.16-5e67432f550dc41b572bf55847b8aca64e5337db",
"/Users/rye/Library/Caches/Yarn/v3/npm-object-assign-4.1.1-2109adc7965887cfc05cbbd442cac8bfbb360863",
"/Users/rye/Library/Caches/Yarn/v3/npm-react-16.3.2-fdc8420398533a1e58872f59091b272ce2f91ea9",
"/Users/rye/Library/Caches/Yarn/v3/npm-react-dom-16.3.2-cb90f107e09536d683d84ed5d4888e9640e0e4df",
"/Users/rye/Library/Caches/Yarn/v3/npm-regenerator-runtime-0.11.1-be05ad7f9bf7d22e056f9726cee5017fbf19e2e9",
"/Users/rye/Library/Caches/Yarn/v3/npm-rxjs-5.5.10-fde02d7a614f6c8683d0d1957827f492e09db045",
"/Users/rye/Library/Caches/Yarn/v3/npm-webpack-4.6.0-363eafa733710eb0ed28c512b2b9b9f5fb01e69b"
]
Does that roughly seem expected for a webpack build?
For my notes, here's what I found on disk with:
$ cat dist/app.js | egrep "^ \!\*\*\* " | egrep -o "\/[^ ]*" | sort
/Users/rye/Library/Caches/Yarn/v3/npm-babel-runtime-6.26.0-965c7058668e82b55d7bfe04ff2337bc8b5647fe/node_modules/babel-runtime/core-js/object/create.js
/Users/rye/Library/Caches/Yarn/v3/npm-babel-runtime-6.26.0-965c7058668e82b55d7bfe04ff2337bc8b5647fe/node_modules/babel-runtime/core-js/object/define-property.js
/Users/rye/Library/Caches/Yarn/v3/npm-babel-runtime-6.26.0-965c7058668e82b55d7bfe04ff2337bc8b5647fe/node_modules/babel-runtime/core-js/object/get-own-property-descriptor.js
/Users/rye/Library/Caches/Yarn/v3/npm-babel-runtime-6.26.0-965c7058668e82b55d7bfe04ff2337bc8b5647fe/node_modules/babel-runtime/core-js/object/get-prototype-of.js
/Users/rye/Library/Caches/Yarn/v3/npm-babel-runtime-6.26.0-965c7058668e82b55d7bfe04ff2337bc8b5647fe/node_modules/babel-runtime/core-js/object/set-prototype-of.js
/Users/rye/Library/Caches/Yarn/v3/npm-babel-runtime-6.26.0-965c7058668e82b55d7bfe04ff2337bc8b5647fe/node_modules/babel-runtime/core-js/symbol.js
/Users/rye/Library/Caches/Yarn/v3/npm-babel-runtime-6.26.0-965c7058668e82b55d7bfe04ff2337bc8b5647fe/node_modules/babel-runtime/core-js/symbol/iterator.js
/Users/rye/Library/Caches/Yarn/v3/npm-babel-runtime-6.26.0-965c7058668e82b55d7bfe04ff2337bc8b5647fe/node_modules/babel-runtime/helpers/classCallCheck.js
/Users/rye/Library/Caches/Yarn/v3/npm-babel-runtime-6.26.0-965c7058668e82b55d7bfe04ff2337bc8b5647fe/node_modules/babel-runtime/helpers/createClass.js
/Users/rye/Library/Caches/Yarn/v3/npm-babel-runtime-6.26.0-965c7058668e82b55d7bfe04ff2337bc8b5647fe/node_modules/babel-runtime/helpers/inherits.js
/Users/rye/Library/Caches/Yarn/v3/npm-babel-runtime-6.26.0-965c7058668e82b55d7bfe04ff2337bc8b5647fe/node_modules/babel-runtime/helpers/possibleConstructorReturn.js
/Users/rye/Library/Caches/Yarn/v3/npm-babel-runtime-6.26.0-965c7058668e82b55d7bfe04ff2337bc8b5647fe/node_modules/babel-runtime/helpers/typeof.js
/Users/rye/Library/Caches/Yarn/v3/npm-babel-runtime-6.26.0-965c7058668e82b55d7bfe04ff2337bc8b5647fe/node_modules/babel-runtime/regenerator/index.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-decorators-0.20.0-605896624053af8c28efbe735c25a301a61c65c5/node_modules/core-decorators/es/core-decorators.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/fn/object/create.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/fn/object/define-property.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/fn/object/get-own-property-descriptor.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/fn/object/get-prototype-of.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/fn/object/set-prototype-of.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/fn/symbol/index.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/fn/symbol/iterator.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_a-function.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_add-to-unscopables.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_an-object.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_array-includes.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_cof.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_core.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_ctx.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_defined.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_descriptors.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_dom-create.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_enum-bug-keys.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_enum-keys.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_export.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_fails.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_global.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_has.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_hide.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_html.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_ie8-dom-define.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_iobject.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_is-array.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_is-object.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_iter-create.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_iter-define.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_iter-step.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_iterators.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_library.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_meta.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_object-create.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_object-dp.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_object-dps.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_object-gopd.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_object-gopn-ext.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_object-gopn.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_object-gops.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_object-gpo.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_object-keys-internal.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_object-keys.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_object-pie.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_object-sap.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_property-desc.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_redefine.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_set-proto.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_set-to-string-tag.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_shared-key.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_shared.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_string-at.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_to-absolute-index.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_to-integer.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_to-iobject.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_to-length.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_to-object.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_to-primitive.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_uid.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_wks-define.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_wks-ext.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/_wks.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/es6.array.iterator.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/es6.object.create.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/es6.object.define-property.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/es6.object.get-prototype-of.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/es6.object.set-prototype-of.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/es6.object.to-string.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/es6.string.iterator.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/es6.symbol.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/es7.symbol.async-iterator.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/es7.symbol.observable.js
/Users/rye/Library/Caches/Yarn/v3/npm-core-js-2.5.5-b14dde936c640c0579a6b50cabcc132dd6127e3b/node_modules/core-js/library/modules/web.dom.iterable.js
/Users/rye/Library/Caches/Yarn/v3/npm-fbjs-0.8.16-5e67432f550dc41b572bf55847b8aca64e5337db/node_modules/fbjs/lib/ExecutionEnvironment.js
/Users/rye/Library/Caches/Yarn/v3/npm-fbjs-0.8.16-5e67432f550dc41b572bf55847b8aca64e5337db/node_modules/fbjs/lib/containsNode.js
/Users/rye/Library/Caches/Yarn/v3/npm-fbjs-0.8.16-5e67432f550dc41b572bf55847b8aca64e5337db/node_modules/fbjs/lib/emptyFunction.js
/Users/rye/Library/Caches/Yarn/v3/npm-fbjs-0.8.16-5e67432f550dc41b572bf55847b8aca64e5337db/node_modules/fbjs/lib/emptyObject.js
/Users/rye/Library/Caches/Yarn/v3/npm-fbjs-0.8.16-5e67432f550dc41b572bf55847b8aca64e5337db/node_modules/fbjs/lib/getActiveElement.js
/Users/rye/Library/Caches/Yarn/v3/npm-fbjs-0.8.16-5e67432f550dc41b572bf55847b8aca64e5337db/node_modules/fbjs/lib/invariant.js
/Users/rye/Library/Caches/Yarn/v3/npm-fbjs-0.8.16-5e67432f550dc41b572bf55847b8aca64e5337db/node_modules/fbjs/lib/isNode.js
/Users/rye/Library/Caches/Yarn/v3/npm-fbjs-0.8.16-5e67432f550dc41b572bf55847b8aca64e5337db/node_modules/fbjs/lib/isTextNode.js
/Users/rye/Library/Caches/Yarn/v3/npm-fbjs-0.8.16-5e67432f550dc41b572bf55847b8aca64e5337db/node_modules/fbjs/lib/shallowEqual.js
/Users/rye/Library/Caches/Yarn/v3/npm-object-assign-4.1.1-2109adc7965887cfc05cbbd442cac8bfbb360863/node_modules/object-assign/index.js
/Users/rye/Library/Caches/Yarn/v3/npm-react-16.3.2-fdc8420398533a1e58872f59091b272ce2f91ea9/node_modules/react/cjs/react.production.min.js
/Users/rye/Library/Caches/Yarn/v3/npm-react-16.3.2-fdc8420398533a1e58872f59091b272ce2f91ea9/node_modules/react/index.js
/Users/rye/Library/Caches/Yarn/v3/npm-react-dom-16.3.2-cb90f107e09536d683d84ed5d4888e9640e0e4df/node_modules/react-dom/cjs/react-dom.production.min.js
/Users/rye/Library/Caches/Yarn/v3/npm-react-dom-16.3.2-cb90f107e09536d683d84ed5d4888e9640e0e4df/node_modules/react-dom/index.js
/Users/rye/Library/Caches/Yarn/v3/npm-regenerator-runtime-0.11.1-be05ad7f9bf7d22e056f9726cee5017fbf19e2e9/node_modules/regenerator-runtime/runtime-module.js
/Users/rye/Library/Caches/Yarn/v3/npm-regenerator-runtime-0.11.1-be05ad7f9bf7d22e056f9726cee5017fbf19e2e9/node_modules/regenerator-runtime/runtime.js
/Users/rye/Library/Caches/Yarn/v3/npm-rxjs-5.5.10-fde02d7a614f6c8683d0d1957827f492e09db045/node_modules/rxjs/Notification.js
/Users/rye/Library/Caches/Yarn/v3/npm-rxjs-5.5.10-fde02d7a614f6c8683d0d1957827f492e09db045/node_modules/rxjs/Observable.js
/Users/rye/Library/Caches/Yarn/v3/npm-rxjs-5.5.10-fde02d7a614f6c8683d0d1957827f492e09db045/node_modules/rxjs/Observer.js
/Users/rye/Library/Caches/Yarn/v3/npm-rxjs-5.5.10-fde02d7a614f6c8683d0d1957827f492e09db045/node_modules/rxjs/Subscriber.js
/Users/rye/Library/Caches/Yarn/v3/npm-rxjs-5.5.10-fde02d7a614f6c8683d0d1957827f492e09db045/node_modules/rxjs/Subscription.js
/Users/rye/Library/Caches/Yarn/v3/npm-rxjs-5.5.10-fde02d7a614f6c8683d0d1957827f492e09db045/node_modules/rxjs/observable/ArrayLikeObservable.js
/Users/rye/Library/Caches/Yarn/v3/npm-rxjs-5.5.10-fde02d7a614f6c8683d0d1957827f492e09db045/node_modules/rxjs/observable/ArrayObservable.js
/Users/rye/Library/Caches/Yarn/v3/npm-rxjs-5.5.10-fde02d7a614f6c8683d0d1957827f492e09db045/node_modules/rxjs/observable/EmptyObservable.js
/Users/rye/Library/Caches/Yarn/v3/npm-rxjs-5.5.10-fde02d7a614f6c8683d0d1957827f492e09db045/node_modules/rxjs/observable/FromObservable.js
/Users/rye/Library/Caches/Yarn/v3/npm-rxjs-5.5.10-fde02d7a614f6c8683d0d1957827f492e09db045/node_modules/rxjs/observable/IteratorObservable.js
/Users/rye/Library/Caches/Yarn/v3/npm-rxjs-5.5.10-fde02d7a614f6c8683d0d1957827f492e09db045/node_modules/rxjs/observable/PromiseObservable.js
/Users/rye/Library/Caches/Yarn/v3/npm-rxjs-5.5.10-fde02d7a614f6c8683d0d1957827f492e09db045/node_modules/rxjs/observable/ScalarObservable.js
/Users/rye/Library/Caches/Yarn/v3/npm-rxjs-5.5.10-fde02d7a614f6c8683d0d1957827f492e09db045/node_modules/rxjs/observable/from.js
/Users/rye/Library/Caches/Yarn/v3/npm-rxjs-5.5.10-fde02d7a614f6c8683d0d1957827f492e09db045/node_modules/rxjs/operators/observeOn.js
/Users/rye/Library/Caches/Yarn/v3/npm-rxjs-5.5.10-fde02d7a614f6c8683d0d1957827f492e09db045/node_modules/rxjs/symbol/iterator.js
/Users/rye/Library/Caches/Yarn/v3/npm-rxjs-5.5.10-fde02d7a614f6c8683d0d1957827f492e09db045/node_modules/rxjs/symbol/observable.js
/Users/rye/Library/Caches/Yarn/v3/npm-rxjs-5.5.10-fde02d7a614f6c8683d0d1957827f492e09db045/node_modules/rxjs/symbol/rxSubscriber.js
/Users/rye/Library/Caches/Yarn/v3/npm-rxjs-5.5.10-fde02d7a614f6c8683d0d1957827f492e09db045/node_modules/rxjs/util/UnsubscriptionError.js
/Users/rye/Library/Caches/Yarn/v3/npm-rxjs-5.5.10-fde02d7a614f6c8683d0d1957827f492e09db045/node_modules/rxjs/util/errorObject.js
/Users/rye/Library/Caches/Yarn/v3/npm-rxjs-5.5.10-fde02d7a614f6c8683d0d1957827f492e09db045/node_modules/rxjs/util/isArray.js
/Users/rye/Library/Caches/Yarn/v3/npm-rxjs-5.5.10-fde02d7a614f6c8683d0d1957827f492e09db045/node_modules/rxjs/util/isArrayLike.js
/Users/rye/Library/Caches/Yarn/v3/npm-rxjs-5.5.10-fde02d7a614f6c8683d0d1957827f492e09db045/node_modules/rxjs/util/isFunction.js
/Users/rye/Library/Caches/Yarn/v3/npm-rxjs-5.5.10-fde02d7a614f6c8683d0d1957827f492e09db045/node_modules/rxjs/util/isObject.js
/Users/rye/Library/Caches/Yarn/v3/npm-rxjs-5.5.10-fde02d7a614f6c8683d0d1957827f492e09db045/node_modules/rxjs/util/isPromise.js
/Users/rye/Library/Caches/Yarn/v3/npm-rxjs-5.5.10-fde02d7a614f6c8683d0d1957827f492e09db045/node_modules/rxjs/util/isScheduler.js
/Users/rye/Library/Caches/Yarn/v3/npm-rxjs-5.5.10-fde02d7a614f6c8683d0d1957827f492e09db045/node_modules/rxjs/util/noop.js
/Users/rye/Library/Caches/Yarn/v3/npm-rxjs-5.5.10-fde02d7a614f6c8683d0d1957827f492e09db045/node_modules/rxjs/util/pipe.js
/Users/rye/Library/Caches/Yarn/v3/npm-rxjs-5.5.10-fde02d7a614f6c8683d0d1957827f492e09db045/node_modules/rxjs/util/root.js
/Users/rye/Library/Caches/Yarn/v3/npm-rxjs-5.5.10-fde02d7a614f6c8683d0d1957827f492e09db045/node_modules/rxjs/util/toSubscriber.js
/Users/rye/Library/Caches/Yarn/v3/npm-rxjs-5.5.10-fde02d7a614f6c8683d0d1957827f492e09db045/node_modules/rxjs/util/tryCatch.js
/buildin/global.js
/sources/fibonacci.js
/sources/index.js
Yep, all that seems about right 👍
Thanks for the comments and tips! And super looking forward to diving in and trying out PnP as a consumer on projects!!!
All in all, my intuition at a high level for this issue is that:
node_modules
in the source path, whether in one root location or multiply across disk).
https://github.com/yarnpkg/pnp-sample-app
Should work like existing
multiple-roots
scenario.Tasks:
yarn.lock
orpackage-lock.json
if nothing else).