Git Product home page Git Product logo

publish-extensions's Introduction

Publish Extensions to Open VSX

Gitpod Ready-to-Code GitHub Workflow Status

A CI for publishing open-source VS Code extensions to https://open-vsx.org

How to Add an Extension?

⚠️ If you maintain an extension, you probably want to publish it yourself with the ovsx CLI instead of adding it here. ⚠️

To automatically publish an extension to Open VSX, simply add it to extensions.json.

You can also run node add-extension [REPOSITORY] to add it automatically.

Open in Gitpod

Publishing Options

Here is the expected format of an extensions.json entry:

    {
      // Unique Open VSX extension ID in the form "<namespace>.<name>"
      "id": "redhat.vscode-yaml",
      // Repository URL to clone and publish from
      "repository": "https://github.com/redhat-developer/vscode-yaml"
    },

Here are all the supported values, including optional ones:

    {
      // Unique Open VSX extension ID in the form "<namespace>.<name>"
      "id": "rebornix.ruby",
      // Repository URL to clone and publish from
      "repository": "https://github.com/rubyide/vscode-ruby",
      // (RECOMMENDED) The version that should be published; the script compares this version with the latest published version
      "version": "0.27.0",
      // (RECOMMENDED) The Git branch, tag, or commit to check out before publishing (defaults to the repository's default branch)
      "checkout": "v0.27.0",
      // (OPTIONAL) Location of the extension's package.json in the repository (defaults to the repository's root directory)
      "location": "packages/vscode-ruby-client",
      // (OPTIONAL) Extra commands to run just before publishing to Open VSX (i.e. after "yarn/npm install", but before "vscode:prepublish")
      "prepublish": "npm run build",
       // (OPTIONAL) Relative path of the extension vsix file inside the git repo (i.e. when it is built by prepublish commands
       "extensionFile": "dist/js-debug.vsix"
    },

In cases where it is not feasible to build the extension from source, a download URL can be given instead:

    {
      // Unique Open VSX extension ID in the form "<namespace>.<name>"
      "id": "rebornix.ruby",
      // A full URL from which to download the extension package
      "download": "https://github.com/rubyide/vscode-ruby/releases/download/v0.25.0/ruby-0.25.0.vsix",
      // (RECOMMENDED) The version that should be published; the script compares this version with the latest published version
      "version": "0.25.0"
    },

How are Extensions Published?

Every night at 03:03 UTC, a GitHub workflow goes through all entries in extensions.json, and checks if the specified "version" needs to be published to https://open-vsx.org or not.

The publishing process can be summarized like this:

  1. git clone "repository"
  2. (git checkout "checkout" if a "checkout" value is specified)
  3. npm install (or yarn install if a yarn.lock file is detected in the repository)
  4. ("prepublish")
  5. (ovsx create-namespace "publisher" if it doesn't already exist)
  6. ovsx publish (with --yarn if a yarn.lock file was detected earlier)

See all ovsx CLI options here.

publish-extensions's People

Contributors

54696d21 avatar alexventuraio avatar anyduck avatar bryphe avatar cd4d avatar daaniiieel avatar demsullivan avatar dgnthr avatar dododedodonl avatar edwintorok avatar gitmensch avatar herrboyer avatar im-0 avatar jankeromnes avatar javavick avatar mayeu avatar mek101 avatar niklaskeerl avatar noah1510 avatar p4vook avatar roaldnefs avatar rupansh avatar sepeth avatar simurai avatar sinnerjoe avatar spoenemann avatar svenefftinge avatar tchernobog avatar temoto avatar vince-fugnitto avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.