gpt4 book ai didi

angularjs - 如何排除 `node_modules/@types/**/node_modules` ?

转载 作者:搜寻专家 更新时间:2023-10-30 21:10:08 99 4
gpt4 key购买 nike

我遇到过这样一种情况:node_modules/@types 中的类型定义正在安装它自己的@types 依赖项,而这些“嵌套”@types 与我的顶级@types 冲突。

@types
|-angular //v1.5
|-angular-ui-bootstrap
|-node_modules
|-@types
|-angular //v1.6

如何在我的 tsconfig 中排除 node_modules/@types/**/node_modules

一个警告 - 我正在使用 awesome-typescript-loader,它 may have some limitations .

我尝试过的:

1 - exclude 属性中的文件 glob 以排除嵌套的 node_modules

    compilerOptions.exclude: '../node_modules/@types/**/node_modules'

2 - 显式声明类型

    compilerOptions.types: ['angular', 'angular-ui-bootstrap']

3 - typeRoots 中的文件 glob 以排除嵌套的 node_modules

    compilerOptions.typeRoots: ['../node_modules/@types/**/!(node_modules)']

我学到了什么

1 - exclude 似乎不适用于@types

2 - 包含带有“types”的类型意味着包含其依赖的@types

3 - typeRoots 似乎不适用于文件 glob(或者我写错了 glob)

相关:

Exclude @types typings in installed dependencies

https://github.com/Microsoft/TypeScript/issues/9731

https://github.com/Microsoft/TypeScript/issues/11917

https://github.com/s-panferov/awesome-typescript-loader/issues/492

tsconfig - How to ignore @types/whatever/node_modules for a specific directory?

关于我的环境的详细信息

“节点”:“8.6.0”,“ typescript :”2.8.3“,“awesome-typescript-loader”:“5.0.0”,"webpack": "4.8.3",

最佳答案

我找到的解决方案是在 tsconfig.json paths 设置中指定 node_modules/@types 目录。

这是我在 tsconfig.json 中更改的片段,您应该能够根据您的用例进行调整。我需要修改我的 baseUrl 和我的 paths 设置。

   ...
"baseUrl": ".",
"paths": {
"@/*": ["./src/*"],
"*": ["./node_modules/@types/*"]
}
...

在我的例子中,我在我的 TS 项目中使用了绝对 url,所以我的本地文件都是相对于 @/ 的。我想如果你不使用那样的绝对 url,你的配置应该有如下内容:

   ...
"baseUrl": ".",
"paths": {
"*": ["./src/*", "./node_modules/@types/*"]
}
...

这是我完整的tsconfig.json,里面可能有很多无关信息,供引用。

{
"compilerOptions": {
"outDir": "./build/",
"sourceMap": true,
"allowJs": true,
"checkJs": true,
"jsx": "react",
"target": "es2017",
"module": "commonjs",
"moduleResolution": "node",
"allowSyntheticDefaultImports": true,
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"removeComments": false,
"preserveConstEnums": true,
"skipLibCheck": true,
"experimentalDecorators": true,
"esModuleInterop": true,
"baseUrl": ".",
"paths": {
"@/*": ["./src/*"],
"*": ["./node_modules/@types/*"]
}
},
"include": ["**/*", "*"],
"exclude": ["build", "node_modules", "coverage"]
}

关于angularjs - 如何排除 `node_modules/@types/**/node_modules` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50530597/

99 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com