排除已安装依赖项中的@types输入

Pel*_*obs 12 typescript typescript-typings

是否可以排除已安装依赖项中的全局类型?

我安装了一个本地依赖项.这也复制了该依赖项的node_modules文件夹.此node_modules文件夹保存已安装的@types类型.这些与为主项目安装的@types类型冲突.

例如.project-path/node_modules/local-dependency/node_modules/@types/react与冲突project-path/node_modules/@types/react.

是否有可能使打字稿编译器忽略该局部依赖的输入?

Eri*_*ngs 8

或者,"skipLibCheck": true在编译器选项中使用。


Con*_*los 5

您是否尝试使用空数组作为types选项?

{
  "compilerOptions": {
    ...,
    "types": []
  }
}
Run Code Online (Sandbox Code Playgroud)

这将禁用类型的自动包含。

有关更多详细信息,请参阅TypeScript 文档


Nat*_*end -4

您可以使用tsconfig.json 中的includeexclude属性来更细粒度地控制 TypeScript 编译器包含的文件:

http://www.typescriptlang.org/docs/handbook/tsconfig-json.html

和属性采用类似 glob"include""exclude"文件模式列表。支持的全局通配符有:

  • * 匹配零个或多个字符(不包括目录分隔符)
  • ?匹配任意一个字符(不包括目录分隔符)
  • **/ 递归匹配任意子目录

所以也许你可以这样做:

{

    ...    

    "exclude": [
        "node_modules"
    ]
}
Run Code Online (Sandbox Code Playgroud)

或者,根据您的需要,您可以设计一种更有针对性的全局模式,该模式仅排除给node_modules您带来问题的一个依赖项的目录。

如果您可以控制local-dependency示例中的模块,更好的解决方案是更新依赖项或您的应用程序以使用相同版本的模块@types/react,删除您的 npm 模块,然后执行新的npm install. 这应该允许 npm 安装该模块的单个共享版本,消除任何冲突的可能性。

  • 我尝试添加 `"exclude": ["node_modules/@types/node/index.d.ts"]` 但没有什么区别。似乎“node_modules/@types”很特殊——进行排除的唯一方法是使用“types”属性并显式包含除我不想要的之外的所有内容,这意味着每次间接依赖项更改时都会更新列表。即,TypeScript 中可能不支持排除“node_modules/@types”。如果有的话,也不是这个。 (11认同)