The Visual Studio Code Extension Manager
- Node.js at least
14.x.x
Or simply Docker.
In order to save credentials safely, this project uses keytar which uses libsecret
, which you may need to install before publishing extensions. Setting the VSCE_STORE=file
environment variable will revert back to the file credential store. Using the VSCE_PAT
environment variable will also avoid using keytar.
Depending on your distribution, you will need to run the following command:
- Debian/Ubuntu:
sudo apt-get install libsecret-1-dev
- Alpine:
apk add libsecret
- Red Hat-based:
sudo yum install libsecret-devel
- Arch Linux:
sudo pacman -S libsecret
Install vsce globally:
npm install --global @vscode/vsce
Verify the installation:
vsce --version
vsce
is meant to be mainly used as a command line tool. It can also be used a library since it exposes a small API. When using vsce as a library be sure to sanitize any user input used in API calls, as a security measurement.
You can also build a container for running vsce:
$ DOCKER_BUILDKIT=1 docker build --tag vsce "https://github.com/microsoft/vscode-vsce.git#main"
Validate the container:
docker run --rm -it vsce --version
Publish your local extension:
docker run --rm -it -v "$(pwd)":/workspace vsce publish
You can configure the behavior of vsce
by using CLI flags (run vsce --help
to list them all). Example:
vsce publish --baseImagesUrl https://my.custom/base/images/url
Or you can also set them in the package.json
, so that you avoid having to retype the common options again. Example:
// package.json
{
"vsce": {
"baseImagesUrl": "https://my.custom/base/images/url"
"dependencies": true,
"yarn": false
}
}
First clone this repository, then:
$ npm install
$ npm run watch:build # or `watch:test` to also build tests
Once the watcher is up and running, you can run out of sources with:
node vsce
Tests can be executed with:
$ npm test
Note: Yarn is required to run the tests.
This tool assists in packaging and publishing Visual Studio Code extensions.
Read the Documentation on the VS Code website.