【问题标题】:How to publish declaration files (.d.ts) for vscode extensions如何发布 vscode 扩展的声明文件 (.d.ts)
【发布时间】:2020-10-01 08:48:16
【问题描述】:

我编写了一个 vscode 扩展,它公开了一个供其他扩展使用的 API(通过让 activate() 函数返回一个值)。

我想发布一个 scoped npm 包,它公开一个声明文件 (.d.ts),这将有助于扩展开发人员使用我的扩展。

我的问题是我不能重用扩展的package.json,因为它不允许在包名称中使用@vsce package 失败)。

如果我创建一个专用的package.json 用于将声明文件发布到npm,我最终会从扩展的out 目录中复制.d.ts 文件及其所有依赖项。这种做法似乎有点麻烦。

我找不到描述执行此操作的正确方法的文档:将 vscode 扩展声明文件发布到 npm(范围或非范围)。

这样做的正确方法是什么?

【问题讨论】:

    标签: typescript npm declaration vscode-extensions .d.ts


    【解决方案1】:

    这就是我最终做的:

    1. 我在扩展程序的文件夹旁边创建了另一个不包含源代码的文件夹。
    2. 我在其中放置了一个不同的package.json
      1. 为了清楚起见,我将包的作用域放在了name 属性中,并添加了-types 后缀。
      2. 我创建了一个copy npm 脚本,它从扩展文件夹的out 文件夹中复制工件。此脚本使用ncp 来提供跨平台支持。
      3. 我将@types/vscode 添加到dependencies 属性(不是devDependencies,如publishing declaration files 中所述),因为我的.d.ts 文件包含对vscode 的引用。
    3. 我创建了一个.npmignore 文件来重新包含在.gitignore 文件中排除的out 文件夹(使用否定:!out)。
    4. 我需要从out 文件夹中排除.js 文件以避免与缺少传递依赖项相关的错误。我本可以创建另一个仅发出 .d.ts 文件的 tsconfig.json 文件(使用 emitDeclarationOnly),但最终使用 .npmignore 来执行此操作。

    以上方法对我有用,但一定有更好的方法,对吧?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-27
      • 1970-01-01
      • 1970-01-01
      • 2020-12-24
      • 1970-01-01
      • 2017-02-12
      • 2018-03-11
      相关资源
      最近更新 更多