在已安装的依赖项中排除 @types 类型
Posted
技术标签:
【中文标题】在已安装的依赖项中排除 @types 类型【英文标题】:Exclude @types typings in installed dependencies 【发布时间】:2018-07-20 02:50:27 【问题描述】:是否可以在已安装的依赖项中排除全局类型?
我安装了一个本地依赖项。这也复制了该依赖项的 node_modules 文件夹。此 node_modules 文件夹包含已安装的 @types 类型。这些与为主项目安装的 @types 类型冲突。
例如。 project-path/node_modules/local-dependency/node_modules/@types/react
与 project-path/node_modules/@types/react
冲突。
是否可以让 typescript 编译器忽略本地依赖项中的类型?
【问题讨论】:
我已经回答了similar question。我通过在我的tsconfig.json
的paths
键中指定./node_modules/@types/*
解决了这个问题。
How to exclude `node_modules/@types/**/node_modules`?的可能重复
【参考方案1】:
您是否尝试为types
选项使用空数组?
"compilerOptions":
...,
"types": []
这会禁用自动包含类型。
有关详细信息,请参阅TypeScript documentation。
【讨论】:
【参考方案2】:或者,在编译器选项中使用"skipLibCheck": true
。
【讨论】:
【参考方案3】:您可以在 tsconfig.json 中使用 include
和 exclude
属性来更精细地控制 TypeScript 编译器包含的文件:
http://www.typescriptlang.org/docs/handbook/tsconfig-json.html
* 匹配零个或多个字符(不包括目录分隔符) ?匹配任意一个字符(不包括目录分隔符) **/ 递归匹配任何子目录
"include"
和"exclude"
属性采用类似 glob 的文件模式列表。支持的全局通配符有:
所以也许你可以这样做:
...
"exclude": [
"node_modules"
]
或者,根据您的需要,您可以设计一种更有针对性的 glob 模式,仅排除给您带来问题的一个依赖项的 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
。如果有,不是这个。以上是关于在已安装的依赖项中排除 @types 类型的主要内容,如果未能解决你的问题,请参考以下文章
Android Studio - Gradle 实现 (...) exclude ... 不起作用(无法从依赖项中排除组)
如何从 Kotlin DSL build.gradle 中的所有依赖项中排除库?
Android apk - 如何使用 gradle 从 3rd 方依赖项中排除 .so 文件
如何排除`node_modules/@types/**/node_modules`?
Spring Boot 应用程序“bean 类的 bean 名称与现有冲突” - 如何从 3rd 方库/依赖项中排除包/类?