我有一个错误的node_module(angularfire2)没有使用另一个node_module(@ firebase)中找到的新版本进行更新。
我试图让tsconfig.json帮我设置路径别名,以便将其重新路由以解析为用src编写的调整文件而不是@ firebase中的不兼容的输入文件' s node_modules作为临时修复。
我知道我可以降级(@firebase)node_module以使其兼容。然而,这个问题并不是要让它发挥作用。我只是想弄清楚如何能够覆盖node_module坏的打字。
我正在使用Angular的cli项目,希望我不需要弹出webpack来控制它。
我从post了解到我覆盖了@types文件夹中的打字。
但是我仍然无法在node_module本身中使用index.d.ts覆盖打字。
E.g。 (来自angularfire2)
import { FirebaseApp as FBApp } from '@firebase/app-types';
我想在我的tsconfig.json中为@firebase/app-types
创建一个别名,以便angularfire2将在src/types-overwrite/@firebase/app-types
中查看。
我有以下tsconfig.json,但它仍然无法正确执行别名,仍然会解析为不兼容的node_module的输入文件而不是src中的文件。
我的tsconfig.json
{
"compileOnSave": false,
"compilerOptions": {
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es5",
"typeRoots": [
"node_modules/@types",
"src/types-overwrite"
],
"paths": {
"@firebase/app-types": ["src/types-overwrite/@firebase/app-types"]
},
"lib": [
"es2017",
"dom"
]
},
"include": [
"node_modules/angularfire2",
]
}
如何在Angular-CLI项目的node_module中覆盖index.d.ts键入文件,或者如何让我的tsconfig.json工作?
我添加了一个存储库来展示问题:
答案 0 :(得分:6)
我在这篇文章中找到了答案:
Exclude/overwrite npm-provided typings
添加了:
到我的tsconfig.json:
tsconfig.ts
{
"compilerOptions": {
"lib": ["es6"],
"module": "commonjs",
"noImplicitReturns": true,
"outDir": "lib",
"sourceMap": true,
"target": "es6",
"baseUrl": ".",
"paths": {
"*": [
"src/*",
"declarations/*",
]
},
},
"compileOnSave": true,
"include": ["src/**/*.ts", "src/**/*.tsx", "declarations/**/*.d.ts"],
}