Troubleshooting Deno Extension Activation in VSCode
I faced an issue when enabling the Deno extension in VSCode and I decided to take notes for future reference.
Enabling Deno Extension
To enable the Deno extension  in VSCode, you need to place .vscode/settings.json in the workspace root.
The contents of settings.json are as follows:
{
  "deno.enable": true,
  "editor.formatOnSave": true,
  "editor.defaultFormatter": "denoland.vscode-deno"
}
Issue in Monorepo Environment
In a monorepo environment, placing the project-root directory in the workspace root will not work as expected.
project-root/
    -- backend/
        -- .vscode/
            -- settings.json
    -- frontend/
Conversely, placing settings.json in a subdirectory of project-root will activate the Deno formatter in the frontend directory as well:
project-root/
    -- .vscode/
        -- settings.json
    -- backend/
    -- frontend/
However, adding .vscode/setting.json to overwrite settings didn't work, still causing activation in the frontend directory.
project-root/
    -- .vscode/
        -- settings.json
    -- backend/
    -- frontend/
        -- .vscode/
            -- settings.json
{
  "deno.enable": false,
  "editor.defaultFormatter": "esbenp.prettier-vscode"
}
  
  
  Solution 1: Configure deno.enablePaths in settings.json in the project root
This solution seems to be more appropriate since it's mentioned in the official article
The directory structure is;
project-root/
    -- .vscode/
        -- settings.json
    -- backend/
    -- frontend/
And the contents of setting.json is here;
{
  "deno.enable": true,
  "deno.enablePaths": [
    "./backend"
  ],
  "editor.formatOnSave": true,
  "editor.defaultFormatter": "denoland.vscode-deno"
}
This enables Deno extension only in the backend directory.
Solution 2: Open VSCode workspace with the backend directory as the root
Only "Solution 1" is enough for this troubleshooting but I want to leave a trail of things I've tried. That's why I'll write down this solution 2 so you probably don't have to look through this one.
By placing settings.json in a subdirectory of the backend directory and opening the VSCode workspace with the backend directory as the root, it will work properly:
// move to the backend directory from project root
$ cd backend
// open the VScode workspace
$ code .
The directory structure would be like this.
-- backend/
    -- .vscode/
        -- settings.json
The frontend directory needs to be developed separately in VSCode as a separate workspace.
 

 
    
Top comments (0)