I have a monorepo that is managed by lerna which relies on the Yarn workspaces feature. It looks like this:
/repo
|-- packages
| |-- pkg-a
| | |-- package.json
| |-- pkg-b
| | |-- package.json
| |-- pkg-c
| | |-- package.json
|-- package.json
I use yarn upgrade-interactive
to update a selection of dependencies across my packages but I get this error:
Invariant Violation: expected workspace package to exist for "@babel/plugin-transform-classes"
However this isn't a direct dependency of mine. When I search for it in all my package.json
files I get nothing:
$ find . -name "package.json" -and -not -path "*/node_modules/*" | xargs grep "@babel/plugin-transform-classes"
$
It is present in my yarn.lock
file though:
$ grep "@babel/plugin-transform-classes" yarn.lock
"@babel/plugin-transform-classes@^7.10.4":
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz#405136af2b3e218bc4a1926228bc917ab1a0adc7"
"@babel/plugin-transform-classes@^7.4.0":
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.0.tgz#e3428d3c8a3d01f33b10c529b998ba1707043d4d"
"@babel/plugin-transform-classes" "^7.4.0"
"@babel/plugin-transform-classes" "^7.10.4"
$
I suspected some sort of caching issue so I tried to start from scratch inside a Docker container:
node_modules
foldersyarn
to install all dependenciesyarn upgrade-interactive
But I get the exact same error.
I went scavenging for answers and none have fixed my issues. What strikes me the most is that nobody seems to know why it is happening.
Can anybody explain why it is happening and how one could reproduce this issue? Once we know why, we stand a better chance to find a proper solution.
Technical details:
It seems that it is a bug
https://github.com/yarnpkg/yarn/issues/7734#issuecomment-580012389
And the official recommendation is to downgrade to Yarn 1.19.x or upgrade packages manually (Yarn 1 is deprecated).
https://github.com/yarnpkg/yarn/issues/7734#issuecomment-671729912
Also, you could try to use https://www.npmjs.com/package/npm-check-updates CLI utility
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With