Vl4dimyr
Vl4dimyr

Reputation: 916

Copy enable/disable extensions settings to another workspace

Idea:

I wanted to clean up my vscode extensions, because I'm working with a lot of different languages/file types and having all these extensions installed and enabled at once is just too much.

Problem:

I disabled some extensions for a specific workspace, and wanted to copy these settings to another workspace, but vscode is not storing the information about enabled/disabled extensions in .vscode/settings.json.

Questions:

  1. Is there any way to copy these settings from one workspace to another?
  2. Is there a better way of dealing with lots of extensions?
  3. Can you recommend tools/extensions for managing extensions per workspace or language(s)

I assume vscode is not loading all extensions at once, but rather when needed. But some extensions display icons on the left or bottom of the window and overcrowd the "Show All Commands" list/search.

Upvotes: 14

Views: 5497

Answers (4)

adam.hendry
adam.hendry

Reputation: 5653

A simple way to do this is with profiles, as noted here:

  1. In the Command Palette (Ctrl + Shift + P), type Profiles: Export Profile...
  2. Select the items you want to export
  3. Create a name for the profile
  4. Choose whether to save it to a Local file or GitHub gist

I store mine in .vscode/ in my repo for each project and push that to GitHub. Then I tell users/contributors to import the profile using Profiles: Import Profile... in the Command Palette.

NOTE: These commands are (now) built into VSCode by default and ProfileSwitcher is deprecated.

Upvotes: 0

PotatoFarmer
PotatoFarmer

Reputation: 2984

VS Code Extension: Unwanted Recommendations made possible by 🎉GARAIO LABS🎉 [ref]


As of 2023-March, the extension:

  • Allows specifying extensions that are unwanted in extensions.json

    {
      "recommendations": [
        "vue.volar"
      ],
      "unwantedRecommendations": [
        "vscode.typescript-language-features",
        "octref.vetur",
        "vue.vscode-typescript-vue-plugin"
      ]
    }
    
  • On VS Code workspace open, will prompt to disable unwanted extensions in workspace (if any found not yet disabled)

  • User then MANUALLY selects extension from the filtered list and sets it to Disabled (in workspace)

Upvotes: 1

user9305149
user9305149

Reputation:

There is a github issue for this problem: Feature Request: Enable/disable extensions from config file #40239.

I posted there a workaround using multiple vscode instances: link

Here is a copy-paste:


I use some kind of workaround to be able to use the extensions I want.

According to the vscode-cli your can specify the folders for extensions and user-data:

Options                  Description

--extensions-dir <dir>   Set the root path for extensions.
--user-data-dir <dir>    Specifies the directory that user data is kept in. Can be used to open multiple distinct instances of Code.

Basically, I create a specific folder for my specific tasks (one of front, one for back, ..) and set basic extensions to my default vscode.

To launch my custom config:

code --extensions-dir "$HOME/.vscode/profiles/my-super-profile/extensions" --user-data-dir "$HOME/.vscode/profiles/my-super-profile/data"

The problem are that:

  • It's not REALLY a project config file but a global preference file
  • I had to install manually the extensions. I believe there is a hackish way to do this
  • It use more size than necessary (multiple vscode data / duplicate extensions)
  • It doesn't solve in a clean way the team-sharing problem

Upvotes: 1

alefragnani
alefragnani

Reputation: 3313

VS Code stores this info in its internals instead of the .vscode folder, so you can't copy this info between workspaces. There is an open issue asking exactly what you want.

But, you have an alternative. Use the Profile Switcher extension.

Its description:

This extension allows you to define a number of settings profiles that you can easily switch between. The original idea for this extension came from my desire to have an easy way for me to switch my VS Code to a setup that was better optimised for presenting (changed themes, increase font size, etc).

And this is how it handles extensions:

A profile isn't just the settings you have enabled, but also the extensions that were installed. This allows you to create different profiles for different styles of development (e.g. a React profile and a Vue profile, loading their respective extensions only).

Hope this helps

Upvotes: 9

Related Questions