vscode icon indicating copy to clipboard operation
vscode copied to clipboard

Persist an extensions manifest file

Open Tyriar opened this issue 8 years ago • 12 comments

See https://github.com/Microsoft/vscode/issues/7035 & https://github.com/Microsoft/vscode/issues/3884

Persist an extension manifest file extensions.json that lists all extensions installed and other relevant data (whether they're disabled?), on launch the list could be checked and automatically install extensions. This would help enable:

  • Roaming on Windows #3884
  • More logically cache and config files on Linux, also #3884
  • Allow extensions or external programs to sync extensions more easily

This is a soft dependency for https://github.com/Microsoft/vscode/issues/3884

Tyriar avatar Nov 14 '16 03:11 Tyriar

Not a big fan of this. From my experience, multiple truths never work nicely.

Some problems I see:

  • Would an unsuccessful extension uninstall remove it from the list?
  • Extensions that fail installing will keep Code busy always trying to install them.
  • Installed extensions that suddenly have dependencies in newer versions. Do we expect Code to install those too? And update the list?
  • What would it mean to the list if the user would side load an extension? And what about manually removing the extension?

joaomoreno avatar Nov 14 '16 08:11 joaomoreno

Making this the sole source of truth would probably be ideal, the rest seem to be error handling and implementation details. Something like this is necessary if we want to allow extensions to work in a roaming environment as the user data dir and the extensions themselves are too big to roam.

Would an unsuccessful extension uninstall remove it from the list? I guess it would depend on when unsuccessful was; bad internet connection: no, extension doesn't exist: maybe

Extensions that fail installing will keep Code busy always trying to install them. Only if we allowed it.

Installed extensions that suddenly have dependencies in newer versions. Do we expect Code to install those too? And update the list? If necessary, I don't see why it would need to change from what's done now. If it's based on local storage this would just mean moving the state to a file, if it's based on the dir then shifting the source of truth to be the file.

What would it mean to the list if the user would side load an extension? And what about manually removing the extension? Side loading: Good question :smile: Manually removing: The user could remove it from the file.

To be clear, this is just a suggestion to solve the problem of allowing extensions to roam efficiently (nice to have) and a clean division of cache and config (not as important). Currently we roam pretty much everything (include user data dir) except for extensions. We could just accept this as a limitation but it's not ideal.

Tyriar avatar Nov 14 '16 17:11 Tyriar

Hey Guys

Any movement on this?

Thx

JasCodes avatar Sep 08 '17 21:09 JasCodes

Similar issue i opened Year ago for my settings sync. https://github.com/Microsoft/vscode/issues/14444

If a extension.json file is created and API to import the file is provided such that in file it should be written for each extension that it is disabled or enabled. It will fulfill that issue.

shanalikhan avatar Nov 06 '17 12:11 shanalikhan

Hey, any updates on this issue? Thanks

NotWearingPants avatar Oct 01 '18 18:10 NotWearingPants

There is a very good extension to sync all settings. Tested! Work perfectly!

https://marketplace.visualstudio.com/items?itemName=Shan.code-settings-sync

truongnmt avatar May 01 '19 08:05 truongnmt

I work on Flow and TypeScript projects as a part of my day-to-day. The ability to define which extensions to enable, and which to disable in .vscode/settings.json is a highly coveted feature. Please make this a thing.

lxe avatar May 06 '19 16:05 lxe

Ah man.. its so obvious; after doing so wondful job on vscode Microsoft will still do that little thing that will make me pull all my hair out!!!

JasCodes avatar May 09 '19 19:05 JasCodes

+1

leolcao avatar Sep 25 '20 07:09 leolcao

Can you guys implement this to solve the roaming profile issues finally, please?

alexhass avatar Dec 14 '20 12:12 alexhass

Sublime's Package Control, or a plugin manager in Vim for example both read / write from human readable config files, listing installed packages / plugins / extensions. Many devs, myself included, use a Git repo to store these configs. It would be nice to be able to fully recreate a VSCode environment from config files, without requiring us to use VSCode's Settings Sync.

zzzachzzz avatar Dec 27 '20 23:12 zzzachzzz

@zzzachzzz see this: https://code.visualstudio.com/api/working-with-extensions/publishing-extension#your-extension-folder

"To load an extension, you need to copy the files to your VS Code extensions folder [...]"

The way to exploit this in dotfiles is to use local extension pack as a sync point. See: https://github.com/Arkq/dotfiles/blob/master/.vscode/extensions/arkq.dotfiles-1.0.0/package.json

arkq avatar Sep 21 '22 12:09 arkq

This is more an implementation detail of how extension roaming could work. Moving to @sandy081 but feel free to close off as things have changed a lot since 2016

Tyriar avatar Sep 22 '22 14:09 Tyriar

We are now having a manifest of installed extensions in profiles.

sandy081 avatar Sep 22 '22 16:09 sandy081