如何在 VSCode Marketplace 中将代码段集合创作为多种语言?

How can I author a Snippet Collection to multiple languages in VSCode Marketplace?

我的目标是创建一个片段集合,这些片段将在 VSCode 市场中提供。这些片段将适用于 3 种语言(html、css 和 JS)。这对从事特定框架工作的任何人都有帮助,尤其是我的团队。

我知道我可以确定片段的范围() to multiple languages. I also know that according to the docs 我应该有一个包含片段数组的贡献对象。在我的 package.json 中,对于我的 vsc-extension默认如下:

"contributes": {
    "snippets": [
        {
            "language": "markdown",
            "path": "./snippets/markdown.json"
        }
    ]
}

然后将我的 package.json 更新为类似以下内容对我来说是否正确:

"contributes": {
    "snippets": [
        {
            "language": "html",
            "path": "./snippets/snippets.json"
        },
        {
            "language": "javacript",
            "path": "./snippets/snippets.json"
        }
    ]
}

然后让我的代码片段声明它们自己的范围 ("scope": "html")?

我在问题中遗漏的一条信息是,我使用 Yo 生成器创建了我的代码片段项目。这是文档中推荐的操作。

这成功了。我在 contributions 中的 snippets 数组中添加了几种语言,如下所示。

"contributes": {
    "snippets": [
        {
            "language": "html",
            "path": "./snippets/snippets.json"
        },
        {
            "language": "javacript",
            "path": "./snippets/snippets.json"
        }
        ,
        {
            "language": "scss",
            "path": "./snippets/snippets.json"
        }
    ]
}

然后在 snippets/snippets.json 里面有一个包含我所有片段的大对象。您可以在下面看到一个示例。每个的关键行是 "scope": "html"scope": "scss"

"Each Helper": {
    "scope": "html",
    "prefix": "each",
    "body": [
        "{{#each }}",
        "    ",
        "{{/each}}"
    ],
    "description": "Creates each helper -- handlebars"
},
"Break Point Small": {
    "scope": "scss",
    "prefix": "bps",
    "body": [
        "",
        "@include breakpoint(\"small\") {// 551px and up",
        "    ",
        "}"
    ],
    "description": "Tablet Break Point --Stencil"
},

我想我应该在无法在此处或文档中找到答案后尝试一下。

我的方法是为每种类型的片段创建一个文件:php-snippets.json、js-snippets.json 等,然后将这些文件添加到片段数组。

"contributes": {
    "snippets": [
        {
            "language": "php",
            "path": "./snippets/php-snippets.json"
        },
        {
            "language": "javascript",
            "path": "./snippets/js-snippets.json"
        }
    ]
}