Explore support for VSCode's new Multi-root workspace feature.
Notably, rootPath now can be a list.
https://github.com/Microsoft/vscode/wiki/Extension-Authoring:-Adopting-Multi-Root-Workspace-APIs
This is somewhat different from #385, depending on the way the user uses VSCode.
For the following app,
/app
/client
/server
/doc
/app in one Window. Vetur support for /client is #385./app/client, /app/server as two top-level folders. That's this issue.
IssueHunt Summary
If you need any testing, I have a use case explained here: https://github.com/vuejs/vetur/issues/423#issuecomment-369009195. I'll be happy to test any progress on this feature.
One workaround could be found here: https://github.com/vuejs/vetur/issues/423#issuecomment-384255018.
I had issues where this and vscode-jest both wanted to be the first (root) folder. Fixed things to some extent - quick and dirty fix adding multi-root support for Vetur lives here: https://github.com/brandonson/vetur
Clone to your extensions dir and follow setup from Vetur's CONTRIBUTING.md. After the compile step you should be good to go.
It is, as mentioned, a quick dirty fix that iterates through the workspace folders looking for a package.json with vue as a dependency. It won't work for newly added folders (you'll need to restart vscode) and it won't handle the case of two vue workspaces. I'll probably try to clean it up and maybe get to a PR eventually, but time constraints mean that's not at the top of my list right this moment - that, and I don't know how this should interact with the centralization from #800.
Edit to add: See the basic-multiroot branch. Master contains the early hack, basic-multiroot is much better.
Any action on this? It's been more than a year and this is still broken.
I have a monorepo project with one of the packages being a vue client project with vuetify dependency.
I'm using yarn workspaces.
The structure is like so:
<root>
โโโ node_modules
โ โโโ vue
โ โโโ vue-apollo
โ โโโ vue-router
โย ย โโโ vuetify
โย ย โโโ vuex
โย ย โโโ [...]
โโโ package.json
โโโ packages
โย ย โโโ my-vue-app
โย ย โย ย โโโ babel.config.js
โย ย โย ย โโโ node_modules
โย ย โย ย โย ย โโโ [ nearly empty folder thanks to yarn workspaces ]
โย ย โย ย โโโ package.json
โย ย โย ย โโโ public
โย ย โย ย โโโ src
โย ย โย ย โโโ [...]
โย ย โโโ [other packages]
โโโ [...]
If I run VSCode from <root>/packages/my-vue-app, I don't have template intellisense finding vuetify tags/attributes.
I believe this has to do with vuetify being under <root>/node_modules instead of my-vue-app/node_modules.
However If I add a few dependencies under <root>/package.json (which normally has none) and run VSCode from <root>, then template intellisense finally works!
<root>/package.json:
"dependencies": {
"vue": "^2.6.10",
"vue-apollo": "^3.0.2",
"vue-router": "^3.1.3",
"vuetify": "^2.1.10",
"vuex": "^3.0.1"
},
This doesn't seem to have side effects for me at the moment.
An easy fix would be to extend the dependency search in parent folders if a dependency is not found under ${workspaceRoot}/node_modules. Unless the dependencies are not installed yet, all dependencies should eventually be found that way.
This problem definitely needs a real fix.
I found a workaround that worked specifically in my case: I had a vscode workspace file like all-projects.code-workspace
{
"folders": [
{
"path": "activities-backend"
},
{
"path": "activities-frontend"
},
{
"path": "graspable-math"
}
]
}
The "activities-frontend" folder had my Vue project in it, but Vetur was trying to use the tsconfig.json in my "activities-backend" folder. I fixed it by rearranging my workspace file like
{
"folders": [
{
"path": "activities-frontend"
},
{
"path": "activities-backend"
},
{
"path": "graspable-math"
}
]
}
. That got rid of the inappropriate Vetur errors that looked kinda like File '~/git/activities-frontend/src/foo.ts' is not under 'rootDir' '~/git/activities-backend/src'. 'rootDir' is expected to contain all source files.
I haven't tested this with a workspace that has more than one Vue project in it, but I suspect this workaround would fail for that.
A related Vetur issue https://issuehunt.io/r/vuejs/vetur/issues/815 has a bounty of $264 so far.
@mesqueeb has funded $10.00 to this issue.
Hi guys. I just funded $10 to this issue.
My use case:
./packages.My current issue:
tsconfig.json of each project properly.
I hope this funding can promote others to also fund this issue and I hope to see full support for Lerna Monorepo's soon!! <3
@garyo has funded $10.00 to this issue.
Same here ($10). I'm using Emacs with eglot in a Yarn workspaces monorepo where the Vue front-end project is in one of the workspaces.
This problem definitely needs a real fix.
I found a workaround that worked specifically in my case: I had a vscode workspace file like
all-projects.code-workspace{ "folders": [ { "path": "activities-backend" }, { "path": "activities-frontend" }, { "path": "graspable-math" } ] }The "activities-frontend" folder had my Vue project in it, but Vetur was trying to use the tsconfig.json in my "activities-backend" folder. I fixed it by rearranging my workspace file like
{ "folders": [ { "path": "activities-frontend" }, { "path": "activities-backend" }, { "path": "graspable-math" } ] }. That got rid of the inappropriate Vetur errors that looked kinda like
File '~/git/activities-frontend/src/foo.ts' is not under 'rootDir' '~/git/activities-backend/src'. 'rootDir' is expected to contain all source files.I haven't tested this with a workspace the has more than one Vue project in it, but I suspect this workaround would fail for that.
I can confirm that this solution works. Moving your vue or nuxt project on the top of the list fixes the issue.
An anonymous user has funded $5.00 to this issue.
oh, my god! who can fix the bug?
lerna projects and multi-root workspaces. Can someone give it a try?@Minigugus that would be a dream come true ๐ I hope someone can test and merge soon <3
In case someone need, here is a transition tool that can be used before Vetur support multi root:
https://marketplace.visualstudio.com/items?itemName=johnsoncodehk.volar
In case someone need, here is a transition tool that can be used before Vetur support multi root:
https://marketplace.visualstudio.com/items?itemName=johnsoncodehk.volar
Thanks for that! Works great, but it throws some linting errors that Vetur doesn't throw :/
@octref
This problem has been going on for a long time, and there are many projects that require multi root
I have seen some PRs addressing the multi-root issue, I hope you can consider leaving it as an option to enable or disable to temporarily resolve the extension's multi rool issue until you have a good solution !
Thanks you !
An anonymous user has funded $20.00 to this issue.
@tobspr has funded $100.00 to this issue.
Hi everyone,
โจIf you interested this issue,โจ
you can go to https://github.com/vuejs/vetur/pull/2377 and https://github.com/vuejs/vetur/pull/2378.
View and post your ideas.
An anonymous user has funded $100.00 to this issue.
An anonymous user has funded $5.00 to this issue.
Most helpful comment
Any action on this? It's been more than a year and this is still broken.