semantic-release-vsce
semantic-release plugin to package and publish VS Code extensions.

Add config to package.json
Use semantic-release-vsce
as part of verifyConditions
and publish
.
{
"scripts": {
"semantic-release": "semantic-release"
},
"release": {
"verifyConditions": [
"semantic-release-vsce",
"@semantic-release/github"
],
"prepare": {
"path": "semantic-release-vsce",
"packageVsix": true
},
"publish": [
"semantic-release-vsce",
{
"path": "@semantic-release/github",
"assets": "*.vsix"
}
]
},
"devDependencies": {
"semantic-release": "^17.0.0",
"semantic-release-vsce": "^2.1.0",
}
}
If packageVsix
is set, will also generate a .vsix file at the set file path after publishing. If is a string, it will be used as value for --out
of vsce package
.
It is recommended to upload this to your GitHub release page so your users can easily rollback to an earlier version if a version ever introduces a bad bug.
If yarn
is set to true
, will use --yarn
option for vsce package
and vsce publish
.
Working with older versions
This example is for semantic-release
v15.
Prior to v15, prepare
was part of publish
- if you are using v14, you must pass the packageVsix
option to publish
instead.
Prior to v13, you had to override getLastRelease
to use @semantic-release/git
instead of the default @semantic-release/npm
. This is no longer needed.
Travis example
Secret environment variables: VSCE_PAT
Example:
cache:
directories:
- ~/.npm
script:
- npm test
stages:
- test
- name: release
if: branch = master AND type = push AND fork = false
jobs:
include:
- stage: release
language: node_js
node_js: '10.18'
script: npm run semantic-release