Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Persist an extensions manifest file #15442

Closed
Tyriar opened this issue Nov 14, 2016 · 14 comments
Closed

Persist an extensions manifest file #15442

Tyriar opened this issue Nov 14, 2016 · 14 comments
Assignees
Labels
extensions Issues concerning extensions feature-request Request for new features or functionality
Milestone

Comments

@Tyriar
Copy link
Member

Tyriar commented Nov 14, 2016

See #7035 & #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:

This is a soft dependency for #3884

@Tyriar Tyriar added extensions Issues concerning extensions feature-request Request for new features or functionality labels Nov 14, 2016
@Tyriar Tyriar changed the title Persist an extensions manifest Persist an extensions manifest file Nov 14, 2016
@joaomoreno joaomoreno removed their assignment Nov 14, 2016
@joaomoreno joaomoreno added this to the Backlog milestone Nov 14, 2016
@joaomoreno
Copy link
Member

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?

@Tyriar
Copy link
Member Author

Tyriar commented Nov 14, 2016

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 😄
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.

@JasCodes
Copy link

JasCodes commented Sep 8, 2017

Hey Guys

Any movement on this?

Thx

@shanalikhan
Copy link

Similar issue i opened Year ago for my settings sync.
#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.

@NotWearingPants
Copy link
Contributor

Hey, any updates on this issue?
Thanks

@truongnmt
Copy link

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

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

@lxe
Copy link

lxe commented May 6, 2019

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.

@JasCodes
Copy link

JasCodes commented May 9, 2019

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!!!

@leolcao
Copy link

leolcao commented Sep 25, 2020

+1

@alexhass
Copy link

alexhass commented Dec 14, 2020

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

@zzzachzzz
Copy link

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.

@arkq
Copy link

arkq commented Sep 21, 2022

@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

@Tyriar
Copy link
Member Author

Tyriar commented Sep 22, 2022

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

@sandy081
Copy link
Member

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

@github-actions github-actions bot locked and limited conversation to collaborators Nov 6, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
extensions Issues concerning extensions feature-request Request for new features or functionality
Projects
None yet
Development

No branches or pull requests