创建和导入私有的手写类型定义包

问题描述

我需要创建一个包含(仅)自定义类型定义(typedefs)的私有npm包。这些是不是由TypeScript生成的手写d.ts文件。由于这些是专有的,因此无法将它们添加到DefinitelyTyped。

文件夹结构:键入/ mymodule / index.d.ts
index.d.ts包含:declare module mymodule { ... }

该软件包保留了结构,因此在另一个项目中安装后,我具有:
node_modules / @mycompany / mytypes /键入/ mymodule / index.d.ts

不幸的是,现在我必须在另一个项目中编辑tsconfig.json来添加

    "include": [
      "node_modules/@mycompany/mytypes/typings"
    ],

,或者选择(更正确的选择?)添加compilerOptions下:

      "typeRoots": [
        "node_modules/@types","node_modules/@mycompany/mytypes/typings"
      ]

之后,它可以工作-我可以在另一个项目中引用mymodule.someType

有没有一种方法可以使我在npm安装时自动进行此工作而无需编辑tsconfig include(即,它的行为就像DefinitelyTyped软件包一样)?

如果有更正确的方法可以做到这一点,那是一个有效的答案。

我正在使用TypeScript 3.6或3.7,具体取决于导入项目。

解决方法

有没有一种方法可以使我在npm安装时自动进行此工作,而无需编辑tsconfig include

使tsconfig.json保持不变的唯一方法 是如果键入是作为您尝试使用的模块的一部分提供的。 / p>

例如如果您write your package in TypeScript,此运输将作为模块的一部分自动进行。