【问题标题】:Include runtime type definitions using VSCode extension使用 VSCode 扩展包含运行时类型定义
【发布时间】:2018-10-29 13:20:45
【问题描述】:

我正在开发一个允许用户从另一个应用程序内部运行 Node 进程的库。该库称为“max-api”;向宿主应用程序发送数据的函数通过 Node 模块公开,并以预期的方式加载:

const maxAPI = require("max-api");

但是,用户从不直接与此模块进行交互。相反,当宿主应用程序启动 Node 进程时,它会拦截对 require 的调用,检查模块名称是否为“max-api”,如果是,则提供模块。

这很好用,唯一的问题是我们无法为这些模块提供类型定义。因此,用户不会对“max-api”模块中的功能进行任何自动完成或验证。我正在考虑编写一个 VSCode 扩展来提供这些,但我不是 100% 确定如何开始。提前感谢您的任何建议。

【问题讨论】:

    标签: visual-studio-code vscode-extensions


    【解决方案1】:

    您可以编写一个 TS 分型文件(参见 Definitely Typed)。这将安装在node_modules/@types 中,vscode 会自动选择它来为您的模块提供代码补全。

    【讨论】:

    • 感谢您的回复!所以我们有一个像这样的 d.ts 文件,但问题是我们的用户经常从主机应用程序运行 Node 脚本,而该脚本不在包内。它没有任何模块依赖关系,因此没有 node_modules/@types。也许我们的用户可以通过某种方式配置 VSCode,这样如果我们在其他地方提供 d.ts 文件,VSCode 就可以找到它?
    • 您是否尝试过使用三斜杠指令来指定 vscode 查找类型文件的路径?
    • 这行得通!这很酷。有没有办法让 VSCode 包含对这个 d.ts 文件的引用,而我们的用户不需要向他们的 JS 文件添加引用路径指令?首先,他们不知道该文件在哪里,其次,我真的希望最终用户几乎什么都不做来获取这些类型定义。
    • 当然可以!只需引用 package.json devDependencies 中的类型文件即可。它们必须在 DT 存储库中可用才能正常工作。
    • 所以,这不是我所追求的,因为我们的用户再次在一个非正统的环境中工作,运行裸 .js 文件,没有 node_modules 或 package.json 或任何结构。但是,我开始认为我们试图做的太多了,提供类型而无需用户做任何事情,甚至没有 package.json 存在...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多