に参加して、VS Code の AI 支援開発について学びましょう。

拡張機能マニフェスト

すべての Visual Studio Code 拡張機能は、拡張機能ディレクトリ構造のルートにマニフェストファイル package.json を必要とします。

フィールド

名前 必須 タイプ 詳細
name name string 拡張機能の名前 - スペースなしのすべて小文字である必要があります。
名前は Marketplace で一意である必要があります。
version name string SemVer 互換バージョン。
publisher name string パブリッシャー識別子
engines name object 拡張機能が互換性のある VS Code のバージョンと一致する vscode キーを少なくとも含むオブジェクト。* は使用できません。例: ^0.10.5 は、VS Code の最小バージョン 0.10.5 との互換性を示します。
license string npm のドキュメントを参照してください。拡張機能のルートに LICENSE ファイルがある場合、license の値は "SEE LICENSE IN <filename>" になります。
displayName string Marketplace で使用される拡張機能の表示名。
表示名は Marketplace で一意である必要があります。
description string 拡張機能が何であるか、何をするかの短い説明。
categories string[] 拡張機能に使用するカテゴリ。許可される値: [Programming Languages, Snippets, Linters, Themes, Debuggers, Formatters, Keymaps, SCM Providers, Other, Extension Packs, Language Packs, Data Science, Machine Learning, Visualization, Notebooks, Education, Testing]
keywords array 拡張機能を見つけやすくするためのキーワードの配列。これらは Marketplace の他の拡張機能タグとともに含まれます。このリストは現在 30 個のキーワードに制限されています。
galleryBanner object Marketplace ヘッダーをアイコンと一致させるのに役立ちます。詳細は以下を参照してください。
preview boolean 拡張機能を Marketplace でプレビューとしてフラグ付けするように設定します。
main string 拡張機能のエントリポイント。
browser string Web 拡張機能のエントリポイント。
contributes object 拡張機能のコントリビューションを説明するオブジェクト。
activationEvents array この拡張機能のアクティベーションイベントの配列。
badges array Marketplace の拡張機能ページのサイドバーに表示する承認されたバッジの配列。各バッジは、バッジの画像 URL の url、ユーザーがバッジをクリックしたときにたどるリンクの href、および description の 3 つのプロパティを含むオブジェクトです。
markdown string Marketplace で使用される Markdown レンダリングエンジンを制御します。github (デフォルト) または standard のいずれか。
qna marketplace (デフォルト)、stringfalse Marketplace のQ & Aリンクを制御します。デフォルトの Marketplace Q & A サイトを有効にするには marketplace を設定します。カスタム Q & A サイトの URL を指定するには文字列を設定します。Q & A を完全に無効にするには false を設定します。
sponsor object ユーザーが拡張機能をスポンサーできる場所を指定します。これは、ユーザーが拡張機能をスポンサーできるページへのリンクである単一のプロパティ url を持つオブジェクトです。
dependencies object 拡張機能が必要とするすべてのランタイム Node.js 依存関係。npm の dependencies とまったく同じです。
devDependencies object 拡張機能が必要とするすべての開発用 Node.js 依存関係。npm の devDependencies とまったく同じです。
extensionPack array 一緒にインストールできる拡張機能の ID の配列。拡張機能の ID は常に ${publisher}.${name} です。例: vscode.csharp
extensionDependencies array この拡張機能が依存する拡張機能の ID の配列。拡張機能の ID は常に ${publisher}.${name} です。例: vscode.csharp
extensionKind array リモート構成で拡張機能が実行される場所を示す配列。値は ui (ローカルで実行)、workspace (リモートマシンで実行)、またはその両方で、順序が優先度を設定します。例: [ui, workspace] は、拡張機能がどちらの場所でも実行できるが、ローカルマシンで実行することを優先することを示します。こちらで詳細を参照してください。
scripts object npm の scripts とまったく同じですが、vscode:prepublishvscode:uninstall など、VS Code 固有の追加フィールドがあります。
icon string 少なくとも 128x128 ピクセル (Retina スクリーンでは 256x256) のアイコンへのパス。
pricing string 拡張機能の価格情報。許可される値: FreeTrial。デフォルト: Freeこちらで詳細を参照してください。
capabilities object 制限されたワークスペースにおける拡張機能の機能を説明するオブジェクト: untrustedWorkspacesvirtualWorkspaces

npm の package.json リファレンスも参照してください。

完全な package.json の例

{
  "name": "wordcount",
  "displayName": "Word Count",
  "version": "0.1.0",
  "publisher": "ms-vscode",
  "description": "Markdown Word Count Example - reports out the number of words in a Markdown file.",
  "author": {
    "name": "sean"
  },
  "categories": ["Other"],
  "icon": "images/icon.png",
  "galleryBanner": {
    "color": "#C80000",
    "theme": "dark"
  },
  "pricing": "Free",
  "activationEvents": ["onLanguage:markdown"],
  "engines": {
    "vscode": "^1.0.0"
  },
  "main": "./out/extension",
  "scripts": {
    "vscode:prepublish": "node ./node_modules/vscode/bin/compile",
    "compile": "node ./node_modules/vscode/bin/compile -watch -p ./"
  },
  "devDependencies": {
    "@types/vscode": "^0.10.x",
    "typescript": "^1.6.2"
  },
  "license": "SEE LICENSE IN LICENSE.txt",
  "bugs": {
    "url": "https://github.com/microsoft/vscode-wordcount/issues",
    "email": "sean@contoso.com"
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/microsoft/vscode-wordcount.git"
  },
  "homepage": "https://github.com/microsoft/vscode-wordcount/blob/main/README.md"
}

Marketplace 表示のヒント

VS Code Marketplace で拡張機能が美しく表示されるためのヒントと推奨事項をいくつか紹介します。

常に最新の vsce を使用するために、npm install -g @vscode/vsce を実行してインストールされていることを確認してください。

拡張機能のルートフォルダに README.md Markdown ファイルを含めてください。その内容は拡張機能の詳細(Marketplace 上)の本文に表示されます。README.md 内では相対パスの画像リンクを指定できます。

いくつかの例

  1. 文字数カウント
  2. MD ツール

適切な表示名と説明を提供してください。これは Marketplace および製品の表示にとって重要です。これらの文字列は VS Code のテキスト検索にも使用されるため、関連するキーワードを含めることが非常に役立ちます。

    "displayName": "Word Count",
    "description": "Markdown Word Count Example - reports out the number of words in a Markdown file.",

アイコンと対照的なバナーカラーは、Marketplace ページのヘッダーで美しく見えます。theme 属性は、バナーで使用するフォント (dark または light) を指します。

{
  "icon": "images/icon.png",
  "galleryBanner": {
    "color": "#C80000",
    "theme": "dark"
  }
}

設定できるオプションのリンク (bugshomepagerepository) がいくつかあり、これらは Marketplace のリソースセクションの下に表示されます。

{
  "license": "SEE LICENSE IN LICENSE.txt",
  "homepage": "https://github.com/microsoft/vscode-wordcount/blob/main/README.md",
  "bugs": {
    "url": "https://github.com/microsoft/vscode-wordcount/issues",
    "email": "sean@contoso.com"
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/microsoft/vscode-wordcount.git"
  }
}
Marketplace リソースリンク package.json 属性
問題 bugs:url
リポジトリ repository:url
ホームページ homepage
ライセンス license

拡張機能の category を設定してください。同じ category の拡張機能は Marketplace でグループ化され、フィルタリングと発見が向上します。

注: 拡張機能に意味のある値のみを使用してください。許可される値は [Programming Languages, Snippets, Linters, Themes, Debuggers, Formatters, Keymaps, SCM Providers, Other, Extension Packs, Language Packs, Data Science, Machine Learning, Visualization, Notebooks, Education, Testing] です。構文のハイライトやコード補完などの一般的な言語機能には Programming Languages を使用してください。カテゴリ Language Packs は表示言語拡張機能 (例: ローカライズされたブルガリア語) 専用です。

{
  "categories": ["Linters", "Programming Languages", "Other"]
}

承認されたバッジ

セキュリティ上の懸念から、信頼できるサービスからのバッジのみを許可しています。

以下の URL プレフィックスからのバッジを許可しています

  • api.travis-ci.com
  • app.fossa.io
  • badge.buildkite.com
  • badge.fury.io
  • badgen.net
  • badges.frapsoft.com
  • badges.gitter.im
  • cdn.travis-ci.com
  • ci.appveyor.com
  • circleci.com
  • cla.opensource.microsoft.com
  • codacy.com
  • codeclimate.com
  • codecov.io
  • coveralls.io
  • david-dm.org
  • deepscan.io
  • dev.azure.com
  • docs.rs
  • flat.badgen.net
  • github.com (ワークフローからのみ)
  • gitlab.com
  • godoc.org
  • goreportcard.com
  • img.shields.io
  • isitmaintained.com
  • marketplace.visualstudio.com
  • nodesecurity.io
  • opencollective.com
  • snyk.io
  • travis-ci.com
  • visualstudio.com
  • vsmarketplacebadges.dev

注: vsmarketplacebadge.apphb.com のバッジを vsmarketplacebadges.dev のバッジに置き換えてください。

他に利用したいバッジがある場合は、GitHub のissueを開いてください。喜んで検討させていただきます。

拡張機能のコントリビューションの組み合わせ

yo code ジェネレーターを使用すると、TextMate のテーマ、カラーライザー、スニペットを簡単にパッケージ化し、新しい拡張機能を作成できます。ジェネレーターを実行すると、各オプションに対して完全なスタンドアロン拡張機能パッケージが作成されます。ただし、複数のコントリビューションを組み合わせた単一の拡張機能を持つ方が便利な場合がよくあります。たとえば、新しい言語のサポートを追加する場合、言語定義とカラー化、さらにスニペット、場合によってはデバッグサポートもユーザーに提供したいでしょう。

拡張機能のコントリビューションを組み合わせるには、既存の拡張機能マニフェスト package.json を編集し、新しいコントリビューションと関連ファイルを追加します。

以下は、LaTeX 言語定義 (言語識別子とファイル拡張子)、カラー化 (grammars)、およびスニペットを含む拡張機能マニフェストです。

{
  "name": "language-latex",
  "description": "LaTex Language Support",
  "version": "0.0.1",
  "publisher": "someone",
  "engines": {
    "vscode": "0.10.x"
  },
  "categories": ["Programming Languages", "Snippets"],
  "contributes": {
    "languages": [
      {
        "id": "latex",
        "aliases": ["LaTeX", "latex"],
        "extensions": [".tex"]
      }
    ],
    "grammars": [
      {
        "language": "latex",
        "scopeName": "text.tex.latex",
        "path": "./syntaxes/latex.tmLanguage.json"
      }
    ],
    "snippets": [
      {
        "language": "latex",
        "path": "./snippets/snippets.json"
      }
    ]
  }
}

拡張機能マニフェストの categories 属性に Programming LanguagesSnippets の両方が含まれており、Marketplace で簡単に見つけてフィルタリングできるようになっていることに注意してください。

ヒント: マージされたコントリビューションが同じ識別子を使用していることを確認してください。上記の例では、3 つのコントリビューションすべてが「latex」を言語識別子として使用しています。これにより、VS Code はカラーライザー (grammars) とスニペットが LaTeX 言語用であり、LaTeX ファイルを編集するときにアクティブになることを認識します。

拡張機能パック

拡張機能パックで個別の拡張機能をバンドルできます。拡張機能パックは、一緒にインストールされる拡張機能のセットです。これにより、お気に入りの拡張機能を他のユーザーと簡単に共有したり、PHP 開発などの特定のシナリオ向けに拡張機能のセットを作成して、PHP 開発者が VS Code をすぐに使い始めるのに役立てたりできます。

拡張機能パックは、package.json ファイル内の extensionPack 属性を使用して他の拡張機能をバンドルします。

たとえば、デバッガと言語サービスを含む PHP 用の拡張機能パックは次のとおりです

{
  "extensionPack": ["xdebug.php-debug", "zobo.php-intellisense"]
}

拡張機能パックをインストールすると、VS Code はその拡張機能の依存関係もインストールします。

拡張機能パックは Extension Packs の Marketplace カテゴリに分類する必要があります

{
  "categories": ["Extension Packs"]
}

拡張機能パックを作成するには、yo code Yeoman ジェネレーターを使用し、新しい拡張機能パックオプションを選択します。現在 VS Code インスタンスにインストールされている拡張機能のセットでパックをシードするオプションがあります。このようにして、お気に入りの拡張機能を含む拡張機能パックを簡単に作成し、Marketplace に公開して、他のユーザーと共有できます。

拡張機能パックは、バンドルされた拡張機能との機能的な依存関係を持つべきではなく、バンドルされた拡張機能はパックとは独立して管理できる必要があります。ある拡張機能が別の拡張機能に依存している場合、その依存関係は extensionDependencies 属性で宣言する必要があります。

拡張機能のアンインストールフック

拡張機能が VS Code からアンインストールされる際にクリーンアップが必要な場合は、拡張機能の package.json の scripts セクションのアンインストールフック vscode:uninstallnode スクリプトを登録できます。

{
  "scripts": {
    "vscode:uninstall": "node ./out/src/lifecycle"
  }
}

このスクリプトは、拡張機能が VS Code から完全にアンインストールされたとき、つまり拡張機能がアンインストールされた後に VS Code が再起動 (シャットダウンと起動) したときに実行されます。

: Node.js スクリプトのみがサポートされています。

役立つ Node モジュール

VS Code 拡張機能の作成に役立ついくつかの Node.js モジュールが npmjs で利用可能です。これらは拡張機能の dependencies セクションに含めることができます。

次のステップ

VS Codeの拡張性モデルについて詳しく知るには、次のトピックを参照してください。

© . This site is unofficial and not affiliated with Microsoft.