VSCode 个片段作为扩展

VSCode snippets as extension

我在 snippets/snippet.json 文件中创建了这样的代码片段:

{
  "Add subscription": {
    "scope": "typescript",
    "prefix": "!subscription",
    "body": "subscription: Subscription[=11=];",
    "description": "Add subscription property to a class"
  }
}

我也创建了一个 package.json 文件:

{
  // ...
  "contributes": {
    "languages": [
      {
        "id": "typescript",
        "aliases": ["typescript", "ts"],
        "extensions": [".ts"]
      }
    ],
    "snippets": [
      {
        "language": "typescript",
        "path": "./snippets/snippets.json"
      }
    ]
  }
}

如果我将这个片段 JSON 放入任何项目的 .vscode/mysnippets.code-snippet 文件中,那么它工作正常。但是如果我作为扩展发布然后安装它,它就不起作用了。

有什么想法吗?

主要问题是该扩展被安装为禁用的扩展。

使用调试模式,一条消息告诉可能的原因。

you have a "main" property in package.json but not an "activation" property.

因为此代码段扩展中没有 index.js,请删除行

"main": "index.js",

要获得更干净的包,还要定义一个文件 .vscodeignore 文件内容

.vscode/**
.gitignore

还有一个警告

[netdjw.ddata-snippets]: One or more snippets from the extension 'ddata-snippets' very likely confuse snippet-variables and snippet-placeholders (see https://code.visualstudio.com/docs/editor/userdefinedsnippets#_snippet-syntax for more details)

您必须一次添加一个,以查看是哪个代码段导致了此警告。