Skip to content

Need better workspace support #32

@TonyGravagno

Description

@TonyGravagno

This is one of my current open projects:

Image

The extension currently requires a DS project to be saved into the root of the current workspace. This precludes using a GH repo and JS/TS housekeeping files with the project. That is - the DS project only has the JS files required for the app, and we don't want to put a bunch of other JS/VS environment files into that folder, so if the DS project is in the root of the VS workspace, there's no place to put the other supporting files.

My solution is to open the DS project into a folder that is cloned from my repo. In the above screenshot, my CatchIt project has the CatchIt folder, which was saved with the extension. So that top CatchIt is the cloned repo, and note all of the supporting files in that folder, which apply to any subfolder in the project.
The second CatchIt is the extension view on the DS project folder. Right now we can't remove that.

My goal for workspace support would be for this extension to recognize the local DS folder no matter where it is in the current workspace. So it shouldn't "need" the folder in the workspace root, it should recognize that the subfolder in my workspace project is the DS project.

This is the file system for the CatchIt project - the folder which is opened in VSCode and attached to the current workspace:

Image

Note the .git folder and node_modules, which we don't want in DS - and because these folders are outside of the DS folder (nested CatchIt) they are not included.
Note the other files: tsconfig.json, prettier.config.js, eslint.config.js, etc. These are development-time only files. They need to be outside of the DS project folder. Because they are not saved to the DS device, we don't need to be concerned about the files being included or ignored in a generated APK.

node_modules dependency files need special consideration. This is from my package.json:

  "devDependencies": {
    "@eslint/js": "^9.35.0",
    "@eslint/json": "^0.13.2",
    "@types/node": "^24.5.0",
    "eslint-plugin-jsonc": "^2.20.1",
    "globals": "^16.4.0",
    "typescript": "^5.9.2",
    "typescript-eslint": "^8.44.0"
  }

All of these devDependencies are used for linting and Intellisense. (I'll document this (beyond existing doc notes) and maybe make this an optional addition in a later version of the extension). Dev Dependencies are not needed in DS. But for a DS Node project, we do want "dependencies" to be in the DS node_modules folder.

I don't have an answer yet to how to save deps that are required by DS separately from dev-only deps. For example, in the above list, we don't want "typescript" to be passed to DS and exported into an APK, but some other NPM package might need to be there.

Summary: It's a pleasure working with DS projects with this extension when the line between DS and VS is completely erased. That requires full integration with VS Workspaces, and that requires the ability to use a DS project from any folder within the current Workspace, not just wsroot/projectName.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions