将 npm 包与本地打字稿定义文件相关联

Associating npm package with local typescript definitions file

我正在使用一个 npm 包(比如 foo),在开发过程中我想将这个包与一个本地(与项目文件一起提交)打字稿定义文件相关联。我明确地不打算将定义文件发布为 npm 包,因为到目前为止它还不完整并且只涵盖了我实际使用的库的部分。

到目前为止,我已经尝试了以下方法:

将以下内容添加到 tsconfig.json

"typeRoots": [
  "./node_modules/@types",
  "./src/types"
],

并在./src/types/foo/index.d.ts中添加了定义文件。然而,VSCode 和 typescript webpack-loader 都无法将来自 'foo' 的导入与定义文件中的导出相关联。

处理这个问题的正确方法是什么?

我就是这么做的here

为现有库创建"my Type" 按照 @types
的说明进行操作 并将其发布到 "my" Github。 而不是发布到@types

终于

npm i git+https://github.com/my/repo.git

它将在 node_modules/@types/chosen-name
结束 tsc 期望它的确切位置

我没有尝试过,但我看不出为什么它不能从其他来源工作

npm i ../myrepo

在 tsconfig.json 的 "files" 部分添加对类型定义的引用修复了问题:

{
    "compilerOptions": { ... },
    "files" : ["./src/types/foo.d.ts"]
}

Dan 提出的这个 也可行,但需要更多的工作 - 如果有人打算最终发布定义,那是理想的方法。