vscode-profilesDefine different extensions configurations and switch between them in a second. Bind any vscode settings to your profiles. MotivationIn VSCode, extensions are important part of functionality... and they can become numerous. Extensions are great, but if there are too many, they eat up resources and slow down project load times. As a developer, you may want to be able to switch between different development configurations, depending on what you are working on currently. If you are working on back-end, you don't need HTML/CSS extensions, if you are working in pure JS, you probably want to be able to temporarily ditch PHP stuff etc. But VSCode doesn't provide a way to manage your extensions set, you can only disable / uninstall each of them inidividually. This extension was designed to help you with this problem. It was partially inspired by nvm and uses the power of symlinks to maintain several independent extension folders, then switch between them. Moreover, to prevent duplication, each extension usually exists only in special Features
InstallationExtension automatically creates folders structure, required for it to function, but there may be permission problems.
The other way around is to create the necessary folder structure by yourself:
After this, the default profile will be automatically recognized and switched on. It will contain all extensions that you had installed up to this moment. You may rename this profile or delete it later when you create new ones.
CommandsswitchSwitches profile and reloads all VS Code windows in order to engage it. createCreates new empty profile and switches it on.
cloneCreates new profile, based on already existing profile, and switches it on. All extensions from 'base' profile are copied over to the new profile. May be useful also for debugging your extensions - you can clone your current profile and then uninstall extensions one after another until you find the offending extension. deleteDeletes profile. cleanThis command is used to clean maintenanceVscode automatically updates extensions - once a new version is available, it downloads it into profile folder.
That is why profile maintenance is needed, when all newly installed extensions are moved into rescanRescans all extensions of the current profile. Supplementary command, used for debugging. Extension Settings(don't forget to prepend those with initialProfile name that will be turned on automatically on workspace load. Use it only in workspace settings (in your project's .vscode/settings.json). autoSwitch.initialdefault: true
If you have At this time, this means that you cannot switch profiles, if you have 'bounded' (initial) profile set (if 'autoSwitch.initial' option is set to 'true' and you have 'initial' option set). To change the profile, you should change 'initial' setting and re-load your workspaces. So, I currently recommend to use this option in workspace settings when you are settled on what profile you want to use with your project. Do not use it in user settings! In the future, changing profile may become possible, but this will require some architectural changes. Also be aware, that opening a project with a bound profile will engage that profile for all already open projects (you cannot simultaneously have two open projects each with different profile). autoSwitch.createddefault: false Automatically switch to newly created profile. settingsCyclerWarningdefault: true Show warning message that loaded profile has no associated SettingsCycler command / settings block. extensions.symlinkifydefault: true Whether extensions in profile folders will be replaced with symlinks to extensions.storage folder. Turning this off will result in increased disk space usage. extensions.commondefault: []
A list of extensions that will be automatically installed to every profile (their presence is checked every time you are switching to the profile).
extensions.blacklisteddefault: [] A list of extensions that will be automatically uninstalled from every profile (their presence is checked every time you are switching to the profile). Useful, if you decided to switch to another extension for some purpose, or a new version became available as separate package and you need to uninstall the old extension from all the profiles - add it to this list. extensions.excluded_default: [
"ms-vsliveshare.vsliveshare",
"ms-vscode-remote.remote-wsl",
"ms-vscode-remote.remote-ssh",
"ms-vscode-remote.remote-containers"
]
A list of extensions id's that are excluded from symlinkification.
Add here any extensions that give you troubles with write permissions.
Matching is made by paths.profilesdefault: paths.extensionsStoragedefault: Integration with other extensionsVscode-profiles was designed with integration with 2 popular extension for settings management: This allows you to bind any VS Code settings to your profile, so that after switching the profile on you get fully customized environment.
This also allows you to assign to each profile a dedicated Github gist, and save your extensions set and settings there with the help of Example: in your global
Now every time when you switch to 'MyProfile', any settings that you specified within 'values' will be applied,
and you can use For more information, please refer to Known Issues and LimitationsReloadingOnly one profile can be active at the time. This means that though you can have several VS Code projects open in parallel in different windows, you cannot make them use different profiles. When you switch the profile, new profile folder becomes active, and this may lead to unexpected results if VS Code window wasn't reloaded and extensions from previous profile are still in use. Main window, from where profile switching is executed, is realoded automatically, but there is no way to automatically reload all VS Code instances.
Write permissions problemIf you try to rename / delete extension folder, that is in use by file system, you may receive an error about write permissions. This can happen when you are switching profiles / running extension maintanance (profile maintanance is actually done each time you do the switching).
For example, Usage with Remote SSH / WSL / ContainersWhen using any variant of remote connection, VS Code installs certain extensions directly on the remote (to improve productivity). Currently vscode-profiles operates only on local extensions folder and has no way to track which extension are installed where. DeinstallationThis extension replaces Check out my other extensions!They are for everyone and you can find them useful https://marketplace.visualstudio.com/publishers/cyberbiont CreditsIcons made by Freepik from www.flaticon.com
|