https://github.com/zokugun/vscode-vsix-manager
Install extensions from your own sources
https://github.com/zokugun/vscode-vsix-manager
vscode-extension vsix
Last synced: 2 months ago
JSON representation
Install extensions from your own sources
- Host: GitHub
- URL: https://github.com/zokugun/vscode-vsix-manager
- Owner: zokugun
- License: mit
- Created: 2022-12-25T13:01:42.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2026-03-21T09:41:07.000Z (3 months ago)
- Last Synced: 2026-03-22T01:23:31.009Z (3 months ago)
- Topics: vscode-extension, vsix
- Language: TypeScript
- Homepage:
- Size: 520 KB
- Stars: 66
- Watchers: 1
- Forks: 14
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
VSIX Manager
============
[](./LICENSE)
[](https://marketplace.visualstudio.com/items?itemName=zokugun.vsix-manager)
[](https://open-vsx.org/extension/zokugun/vsix-manager)
[](https://ko-fi.com/daiyam)
[](https://liberapay.com/daiyam/donate)
[](https://paypal.me/daiyam99)
With [VSIX Manager](https://github.com/zokugun/vscode-vsix-manager), you can manage your extensions from your settings and install them from several places, including specified marketplaces or GitHub releases.
Table of Contents
-----------------
- [Configuration](#configuration)
- [Groups](#groups)
- [Extensions](#extensions)
- [String notation](#string-notation)
- [Object notation](#object-notation)
- [Disable](#disable)
- [Alternatives](#alternatives)
- [Wanted version](#wanted-version)
- [Sources](#sources)
- [marketplace](#marketplace)
- [file](#file)
- [github](#github)
- [forgejo](#forgejo)
- [fallback property](#fallback-property)
- [throttle property](#throttle-property)
- [Commands](#commands)
- [Crons](#crons)
- [Debugging](#debugging)
- [Donations](#donations)
Configuration
-------------
In your settings:
```jsonc
{
"vsix.sources": {
"opn": {
"type": "marketplace",
"serviceUrl": "https://open-vsx.org/vscode/gallery",
},
},
"vsix.groups": {
"node": [
<...extensions>
],
"python": [
<...extensions>
],
},
"vsix.extensions": [
"opn:zokugun.automatic-editor-sorter",
"opn:zokugun.explicit-folding",
"node",
],
"vsix.crons": {
"update": "0 12 * * *"
},
}
```
Groups
------
With `vsix.groups`, you can manage your extensions by sets.
Extensions
----------
### String notation
`vsix.extensions` and each group of `vsix.groups` are a list of expression
```
expression = ["-"] *identifier* ("||" *identifier*)*
identifier = *groupName* | *extensionID* | *sourceName*:*extensionID*
```
- `extensionID`: id of an extension found in VSCode, VSCodium, ... (same as `.`)
- `groupName`: name of a group defined in `vsix.groups`
- `sourceName`: name of a source defined in `vsix.sources`
```jsonc
"vsix.extensions": [
"opn:zokugun.explicit-folding",
"-vsx:devXalt.extYalt||ms:devX.extY"
],
```
### Object notation
```jsonc
"vsix.extensions": [
"-vsx:devXalt.extYalt||ms:devX.extY"
],
// is equivalent to
"vsix.extensions": [
{
"id": [
"vsx:devXalt.extYalt",
"ms:devX.extY",
],
"enabled": false,
},
],
```
### Disable
If an expression is prefixed by `-` or `"enabled": false`, then the extension or the group of extension will be installed in a disable state.
### Alternatives
If an expression contains multiple identifiers, the manager will try the first one. It it fails, it will try the next one until an extension is installed.
### Wanted version
You can specify the version you want like `"ms:devX.extY@0.99.0"`.
Sources
-------
Within `vsix.sources`, you can define where to find the extensions.
### marketplace
```jsonc
"vsix.sources": {
"opn": {
"type": "marketplace",
"serviceUrl": "https://open-vsx.org/vscode/gallery",
},
},
```
### file
```jsonc
"vsix.sources": {
"mfs": {
"type": "file",
"path": "~/my-extensions",
},
},
```
#### Home
The `~` shortcut for the home directory is working on all systems, including Windows.
#### Lookup
The latest version will be searched in:
- `~/my-extensions`
- `~/my-extensions/`
- `~/my-extensions/.`
For an extension named: `"mfs:devX.extY"`, it will for the files:
- `~/my-extensions/devX.extY-.vsix`
- `~/my-extensions/devX/devX.extY-.vsix`
- `~/my-extensions/devX.extY/devX.extY-.vsix`
For an extension named: `"mfs:extXYZ"`, it will for the files:
- `~/my-extensions/extXYZ-.vsix`
- `~/my-extensions/extXYZ/extXYZ-.vsix`
### git
#### Syntax
Whether you use GitHub or Forgejo, a release can possibly contain multiple extensions and/or versions.
If no version is specified (`github:/@`), then the manager will select the latest.
If the release contains multiple extensions and none are specified, it will select the first one.
You can select the wanted extension like `github:/!` (`github:/!@`).
#### GitHub
`github` is a built-in source (no configuration required) and will install extensions from the GitHub release pages.
```jsonc
{
"vsix.extensions": [
"github:/",
],
}
```
#### Private repository
You can access your private repositories by giving an access token. You can specify an environment variable to read it from.
```jsonc
{
"vsix.sources": {
"mgh": {
"type": "github",
"token": "env:MY_TOKEN",
},
},
"vsix.extensions": [
"mgh:/",
],
}
```
#### Owner
```jsonc
{
"vsix.sources": {
"mgh": {
"type": "github",
"owner": "",
},
},
"vsix.extensions": [
"mgh:",
],
}
```
#### GitHub Enterprise
```jsonc
{
"vsix.sources": {
"ghe": {
"type": "github",
"url": "https://github.myserver.com/api/v3",
},
},
"vsix.extensions": [
"ghe:/",
],
}
```
#### Forgejo
`forgejo` is a built-in source and will install extensions from the Forgejo release pages.
```jsonc
{
"vsix.sources": {
"mfj": {
"type": "forgejo",
"serviceUrl": "https://forgejo.myserver.com/api/v1",
},
},
"vsix.extensions": [
"mfj:/",
],
}
```
### `fallback` property
You can use the `fallback` property to use another source when the extension isn't found in the first source.
```
"vsix.sources": {
"mfs": {
"type": "file",
"path": "~/my-extensions",
"fallback": "opn",
},
"opn": {
"type": "marketplace",
"serviceUrl": "https://open-vsx.org/vscode/gallery",
},
},
```
### `throttle` property
You can use the `throttle` property to limit the number of requests to a source.
```jsonc
"vsix.sources": {
"opn": {
"type": "marketplace",
"serviceUrl": "https://open-vsx.org/vscode/gallery",
"throttle": 5000,
},
},
```
Commands
--------
- `> VSIX Manager: Adopt unmanaged extensions`: brings extensions that are currently unmanaged under the control of VSIX Manager. Use this command to ensure all your listed extensions are managed consistently.
- `> VSIX Manager: Install extensions`: install the extensions
- `> VSIX Manager: Uninstall extensions`: uninstall the extensions
- `> VSIX Manager: Update extensions`: update the extensions
Crons
-----
`vsix.crons` allows you to schedule the `update` command.
```jsonc
"vsix.crons": {
"update": "0 12 * * *" // at 12PM, every day
}
```
Debugging
---------
If the property `vsix.debug` (`false` by default) is `true`, the extension will print out debug information into the channel `VSIX Manager` of the panel `Output` (menu: `View` / `Output`).
Donations
---------
Support this project by becoming a financial contributor.
ko-fi.com/daiyam
liberapay.com/daiyam/donate
paypal.me/daiyam99
**Enjoy!**