/semantic-release-vsce

semantic-release plugin to package and publish VS Code extensions

Primary LanguageJavaScriptMIT LicenseMIT

semantic-release-vsce

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

npm downloads ci dependencies peerDependencies semantic-release

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 --yarnoption 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_TOKEN

Example:

# .travis.yml

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