ローカルのsettings.json
にjson.schemas
という項目を置きます。
settings.json を作る
VSCode はプロジェクトルートに置かれているvscode/settings.json
ファイルを自動で読み込み、設定に適用してくれるので、とりあえずこれを以下のような内容で作ります。
{
"json.schemas": []
}
この配列は、
type Schema =
| {fileMatch: string[], url: string}
| {fileMatch: string[], schema: object}
なオブジェクトで構成された配列になります。
fileMatch
fileMatch
は文字列な配列で、その JSON スキーマを適用するファイルのパターンやパスを置きます。今回のようなローカルのsettings.json
の場合は/
はプロジェクトルートになります。
[
{
"fileMatch": [
"/foo/**/xxx.json",
"/absolute/aaa/xxx.json
],
}
]
url
スキーマファイルへのパスまたは URL を置きます。このパスの場合も、ローカルのsettings.json
の場合は/
はプロジェクトルートになりますので、/.../.../xxx.json
のように絶対パスで指定します。
URL の場合は、JSON スキーマを提供している URL を設定します。例えば、npm のpackage.json
のスキーマであれば、http://json.schemastore.org/packageという URL を置くと良いです。
[
{
"fileMatch": ["**/*"],
"url": "http://json.schemastore.org/package"
}
]
schema
これはurl
プロパティを設定しない時に必要です。単に JSON スキーマをこのオブジェクトの中に記述していきます。
[
{
"fileMatch": ["**/*"],
"schema": {
"type": "object"
}
}
]
関連エラー
Request vscode/content failed unexpectedly without providing any details.(768)
自身のものを使う時はどこか参照できる URL などに置くと思いますが、その URL が302
リダイレクトなどしている場合上のメッセージのように読み込んでくれません。これはリダイレクト先の URL を記述することによって直ります。
僕の場合怒ったのは、npm に公開してunpkg.com
から取得しようとした時です。https://unpkg.com/nju33/xxx/foo.json
という URL はhttps://unpkg.com/nju33/xxx@0.0.0/foo.json
のような URL へリダイレクトする設定となっていた為です。
ちょっと不便ですね,,,