npm 使用声明文件发布库

svmlkihl  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(146)

我已经通过从jsdocs生成的声明文件(.d.ts)为a library添加了类型支持。然而,当库被使用时(例如import foo from 'the-library/foo'),TypeScript会抱怨Cannot find module … or its corresponding type declarations .ts(2307)。奇怪的是(可能是一个红鲱鱼),VS Code中的cmd + click不再跳转到该文件。
库没有捆绑,因此类型也没有捆绑。TS documentation on publishing a library只涵盖了捆绑的场景(这没有意义,因为库通常没有捆绑)。
单个声明文件与实现文件位于同一位置,如下所示:

./lib/
  ├ foo.js
  └ foo.d.ts

字符串
我的package.json导出类型:

{
  "name": "the-library",
  "type": "module",
  "files": ["./lib/**/*"],
  "exports": {
    "foo": {
      "default": "./lib/foo.js",
      "types": "./lib/foo.d.ts"
    }
  }
}


我尝试在package.json中使用一个barrel types文件的根级别“types”字段,但产生了相同的TS错误。
生成的声明文件看起来很好,在库中,VS Code IntelliSense可以很好地使用它们。
我在SO上看到的所有问题似乎都是通过“重新启动TS服务器”来回答的,我这样做无济于事。

ogq8wdun

ogq8wdun1#

TypeScript抱怨Cannot find module … or its corresponding type declarations .ts(2307)。奇怪的是(可能是一个红鲱鱼),在VS代码中的cmd + click不再跳转到文件。
这是由一个太快的n-肮脏的minimum-repo设置引起的:VS Code(TypeScript)只是在没有tsconfig.json(在消费项目中)时发脾气。它需要moduleResolution(它使用"moduleResolution": "NodeNext"并且没有指定其他编译器选项)。没有tsconfig,它会抛出一堆误导性错误(想象一下TypeScript抛出误导性错误?永远不会...)。
为了让TypeScript能够获取这些类型,它们确实需要包含在库的package.json的导出中(就像它们在问题中一样)。忽略它们会导致消费项目中的Cannot find module … or its corresponding type declarations相同。

相关问题