An open API service indexing awesome lists of open source software.

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

Awesome Lists containing this project

README

          

VSIX Manager
============

[![License](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE)
[![Visual Studio Marketplace Version](https://img.shields.io/visual-studio-marketplace/v/zokugun.vsix-manager?label=VS%20Marketplace)](https://marketplace.visualstudio.com/items?itemName=zokugun.vsix-manager)
[![Open VSX Version](https://img.shields.io/open-vsx/v/zokugun/vsix-manager?label=Open%20VSX)](https://open-vsx.org/extension/zokugun/vsix-manager)
[![Donation](https://img.shields.io/badge/donate-ko--fi-green)](https://ko-fi.com/daiyam)
[![Donation](https://img.shields.io/badge/donate-liberapay-green)](https://liberapay.com/daiyam/donate)
[![Donation](https://img.shields.io/badge/donate-paypal-green)](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
ko-fi.com/daiyam


Liberapay
liberapay.com/daiyam/donate


PayPal
paypal.me/daiyam99

**Enjoy!**